c++ - 在角度为 : glLoadIdentity and glOrtho undefined 的通用 Windows 应用程序中使用 OpenGL

标签 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 为顶点和纹理坐标绑定(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/

相关文章:

c# - 在 UWP 项目中引用 native c++ dll

android - LibGDX - 限制透视相机的缩放

java - Android opengles 20 渲染问题

c++ - 6510/C64 Simulator in C++,如何实现Cycle/Clock

c++ - 我需要在另一个 ""中插入一个 ""

c# - 组合 C# 和 C++ 项目适用于 x86 和 x64,但不适用于 ARM

javascript - 推送通知后台任务使 Windows Phone 8.1 模拟器/设备崩溃

opengl-es - OpenGL ES 2.x : any way to reuse depth buffer for off-screen and on-screen rendering?

c++ - 如何在你的 C++ 项目中包含 boost::thread?

c++ - 如果我们对所有 C/C++ 文件使用统一的扩展名 (.c/.cpp),会有什么不同?