问题描述
#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
头文件,程序不运行并抛出错误消息
If I remove the freeglut.h
header file, the program doesn't run and throws an error message,
错误LNK2019:未解决的外部符号__imp__glGetIntegerv @ 8在函数_main中引用
但是, glGetIntegerv
c $ c> glew.h 。为什么删除 freeglut.h
会导致未解决的外部错误?
But, glGetIntegerv
is inside glew.h
. Why removing freeglut.h
would cause an unresolved external error?
EDIT OpenGL 3.3支持。使用Radeon 4670与催化剂11.6。
EDIT I have OpenGL 3.3 support. Using Radeon 4670 with catalyst 11.6.
推荐答案
@mario& @Banthar是的,谢谢。我必须先创建一个上下文来使用任何Opengl功能(是的,即使对于Opengl 1.1,它默认带有窗口。)
@mario & @Banthar yes, thanks. I have to create a context first to use the any Opengl functionality.(yes, even for Opengl 1.1 which comes default with windows.)
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;
}
这篇关于glGetIntegerv返回垃圾值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!