我目前正在尝试将现有的 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 为顶点和纹理坐标绑定(bind)适当的缓冲区,然后调用 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 文件夹中的 header (gl2.h、glext.h 和 gl2platform.h)未定义它们。
最佳答案
角度仅支持 OpenGL-ES 2.0 和 3.0(3.1 正在进行中)。由于 OpenGL-ES 2.0 删除了整个固定功能管道,因此您使用的功能在 OpenGL-ES 2.0 或更高版本中不可用。看看 OpenGL-ES 2.0 Reference .
关于c++ - 在角度为 : glLoadIdentity and glOrtho undefined 的通用 Windows 应用程序中使用 OpenGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43161581/