#include<iostream>
#include"Glew\glew.h"
#include"freeGlut\freeglut.h"
using namespace std;
int main(int argc, char* argv[])
{
GLint ExtensionCount;
glGetIntegerv(GL_NUM_EXTENSIONS, &ExtensionCount);
cout << ExtensionCount << endl;
return 0;
}
这个程序的输出是,
-858993460
.为什么?它应该返回支持的扩展数量。如果我删除
freeglut.h
头文件,程序不运行并抛出错误信息,
error LNK2019: unresolved external symbol __imp__glGetIntegerv@8 referenced in function _main
但是,glGetIntegerv
在里面glew.h
.为什么删除 freeglut.h
会导致 Unresolved external 错误吗?
编辑 我支持 OpenGL 3.3。使用带有 Catalyst 11.6 的 Radeon 4670。
最佳答案
@mario & @Banthar 是的,谢谢。我必须先创建一个上下文才能使用任何 Opengl 功能。(是的,即使是 Windows 默认的 Opengl 1.1。)
glGetIntegerv 没有返回垃圾。 glGetIntegerv 要么返回一个好的值,要么根本不触及指向的地址。你看到垃圾的原因是因为变量没有初始化。这似乎是一个迂腐的评论,但实际上重要的是要知道 glGetIntegerv 在失败时不会触及变量。谢谢@Damon
这个裸机工作正常。
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitContextVersion(3,3);
glutInitContextProfile(GLUT_FORWARD_COMPATIBLE);
glutInitContextProfile(GLUT_CORE_PROFILE);
glutCreateWindow("Test");
GLint ExtensionCount;
glGetIntegerv(GL_NUM_EXTENSIONS, &ExtensionCount);
cout << ExtensionCount << endl;
return 0;
}
关于c++ - glGetIntegerv 返回垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6594214/