我正在使用此处找到的示例:http://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_Text_Rendering_01
问题是,当我指定版本高于3的OpenGL上下文时,即:
glutInitContextVersion (3, 2);
Run Code Online (Sandbox Code Playgroud)
调用glTexImage2D会导致GL_INVALID_ENUM(由GLIntercept报告)错误,并且示例的输出为空.据我所知,从OpenGL 3.3引用中,只有当type不是有效类型常量或者target是无效目标时才会发生这种情况.
这是违规行:
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, g->bitmap.width, g->bitmap.rows, 0, GL_ALPHA, GL_UNSIGNED_BYTE, g->bitmap.buffer);
Run Code Online (Sandbox Code Playgroud)
另外,我曾尝试修改的例子来调整位图,这样它的尺寸为2最近的电源,如在讷河教程(http://nehe.gamedev.net/tutorial/freetype_fonts_in_opengl/24001/),但我仍然有同样的错误.
我也尝试使用GLFW实现这个例子并遇到同样的问题.
我正在使用不同的着色器加载代码到示例,但着色器编译/链接正常,如果我没有指定现代OpenGL版本,该示例仍然有效.
如果它有助于我的环境:Windows 7 64位,Visual Studio 2010
AMD HD6950图形与Catalyst 12.3驱动程序.
软件库有:
FreeGLUT 2.8.0
GLEW 1.7.0
FreeType 2.4.9
glm-0.9.3.0
作为参考,这里是gliLog.txt - 我省略了日志的大部分结尾,因为它反复出现同样的错误.
GL Intercept Log. Version : 0.5 Compile Date: Dec 3 2005 Run on: Fri Jun 22 15:42:05 2012
===================================================
Diagnostic: Unknown function wglCreateContextAttribsARB being logged.
GL ERROR - Function wglGetPixelFormat(0x200110ef) generated error GL_INVALID_ENUM
GL ERROR - …Run Code Online (Sandbox Code Playgroud)