抱歉,我在翻译这个问题的适当名称时遇到了一些麻烦,但我遇到了一个难题,并希望至少知道其来源。
我一直在尝试学习openGL,并且正在按照这个教程进行: open.gl 需要关注的行:
在按照教程操作时,我的代码发生了访问冲突异常。只有当我把以下代码注释掉后,才能使程序正常工作,就像教程所说的那样。关于被注释掉的代码,教程如下所述:“你会立刻注意到这三行代码仅与该库相关。规定我们需要OpenGL上下文支持至少OpenGL 3.2。 GLFW_OPENGL_PROFILE 选项指定我们要一个仅支持新核心功能的上下文。” 我想也许是因为我的驱动程序不支持OpenGL 3.2或更高版本,因为当我注释掉问题中的代码后,我的程序可以正常运行。然而,我下载了一个叫做GPU Caps Viewer的软件。当软件扫描我的硬件时,它表示,我的NVIDIA GeForce GT 540M和HD Graphics 3000都支持OpenGL 4.3。所以我对我的问题来源感到很困惑,我做错了什么,还是这是硬件问题? 下面是GPU CAPS和NVIDIA PORTAL的快照:2 pictures on imgur 不可用:
我一直在尝试学习openGL,并且正在按照这个教程进行: open.gl 需要关注的行:
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
在按照教程操作时,我的代码发生了访问冲突异常。只有当我把以下代码注释掉后,才能使程序正常工作,就像教程所说的那样。关于被注释掉的代码,教程如下所述:“你会立刻注意到这三行代码仅与该库相关。规定我们需要OpenGL上下文支持至少OpenGL 3.2。 GLFW_OPENGL_PROFILE 选项指定我们要一个仅支持新核心功能的上下文。” 我想也许是因为我的驱动程序不支持OpenGL 3.2或更高版本,因为当我注释掉问题中的代码后,我的程序可以正常运行。然而,我下载了一个叫做GPU Caps Viewer的软件。当软件扫描我的硬件时,它表示,我的NVIDIA GeForce GT 540M和HD Graphics 3000都支持OpenGL 4.3。所以我对我的问题来源感到很困惑,我做错了什么,还是这是硬件问题? 下面是GPU CAPS和NVIDIA PORTAL的快照:2 pictures on imgur 不可用:
#include "stdafx.h" //necessary headers in here
int _tmain(int argc, _TCHAR* argv[])
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", nullptr, nullptr); // Windowed
glfwMakeContextCurrent(window);
while (!glfwWindowShouldClose(window))
{
glfwSwapBuffers(window);
glfwPollEvents();
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
glfwSetWindowShouldClose(window, GL_TRUE);
}
glfwTerminate();
return 0;
}
Works:
#include "stdafx.h" //necessary headers in here
int _tmain(int argc, _TCHAR* argv[])
{
glfwInit();
/**
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
**/
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", nullptr, nullptr); // Windowed
glfwMakeContextCurrent(window);
while (!glfwWindowShouldClose(window))
{
glfwSwapBuffers(window);
glfwPollEvents();
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
glfwSetWindowShouldClose(window, GL_TRUE);
}
glfwTerminate();
return 0;
}
Header File
#pragma once
#define GLEW_STATIC
#include <glew.h>
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <thread>
#define GLFW_INCLUDE_GLU
#include <glfw3.h>
最后一个想到的问题是,当我打开NVIDIA控制面板时,它只显示Visual Studio 2013使用Intel HD 3000显卡。它没有给我选择使用GeForce显卡的选项,这可能是问题所在吗?
编辑1: 我尝试通过右键单击并选择“使用图形处理器运行”来通过Windows资源管理器运行我的Visual Studio 2013,但没有成功。
感谢您阅读我的问题并帮助我解决它,如果您自己也有这个问题,希望它能帮助您解决问题。