在通用Windows应用程序中使用OpenGL,角度为:glLoadIdentity和glOrtho undefined

时间:2017-04-01 20:18:28

标签: c++ win-universal-app opengl-es-2.0

我目前正在尝试将现有的OpenGL代码改编为通用Windows应用程序,使用应该将OpenGL调用转换为DirectX的Angle组件。 给我带来问题的一个基本功能是纹理中四边形的全屏显示(为了将着色器应用到该四边形)。 常规OpenGL代码很简单:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-viewWidth, viewWidth, -viewHeight, viewHeight, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
my_quad.RenderObject();

(RenderObject为顶点和纹理坐标绑定适当的缓冲区,然后调用glDrawElements)。

该代码使用OpenGL和Glut在常规Win32应用程序中构建并运行良好。当尝试在Angle + UWP中使用相同的代码时,编译器会在基本函数上返回构建错误:

error C2065: 'GL_PROJECTION': undeclared identifier
error C3861: 'glMatrixMode': identifier not found
error C3861: 'glLoadIdentity': identifier not found
error C3861: 'glOrtho': identifier not found
error C2065: 'GL_MODELVIEW': undeclared identifier
error C3861: 'glMatrixMode': identifier not found
error C3861: 'glLoadIdentity': identifier not found
error C2065: 'GL_TEXTURE_ENV': undeclared identifier
error C2065: 'GL_TEXTURE_ENV_MODE': undeclared identifier
error C2065: 'GL_MODULATE': undeclared identifier
error C3861: 'glTexEnvf': identifier not found

我对OpenGL ES不太熟悉(很明显),但是根据教程,应该支持像glLoadIdentity这样的函数。 我错过了什么吗? Angle文件夹(gl2.h,glext.h和gl2platform.h)中的标题不定义它们。

1 个答案:

答案 0 :(得分:0)

角度仅支持OpenGL-ES 2.0和3.0(3.1正在进行中)。由于OpenGL-ES 2.0删除了整个固定功能管道,因此您使用的功能不适用于OpenGL-ES 2.0或更高版本。看看OpenGL-ES 2.0 Reference