我已开始使用this tutorial学习 OpenGl 。
我按照说明操作,安装了库并编译了教程源代码,当我尝试运行它时,我得到了:
无法打开GLFW窗口。如果你有英特尔GPU,它们不是3.3 兼容。试试2.1版本的教程。
所以我查看了FAQ on this particular issue and got this advice:
但是,我并没有完全理解这个建议。我有一台5年前的笔记本电脑,配有Ubuntu 13.10和移动式英特尔®GM45高速芯片组x86 / MMX / SSE2 。根据FAQ OpenGl 我不支持3.3。 FAQ建议我无论如何都要学习OpenGl 3.3。
但是如何在不实际运行代码的情况下学习?
有没有办法在旧硬件上以某种方式模拟OpenGl 3.3 ?
答案 0 :(得分:2)
也许你可以开始学习OpenGL 2.1;但是,我不建议坚持下去! OpenGL 3.0中发生了大量的更改,您可以在v2.1中使用许多旧功能。
OpenGL规范的现代版本迫使开发人员使用他们的可编程管道'通过着色器程序进行渲染。
虽然v2.1支持一些着色器功能,但它还包含对“固定功能管道”的支持。用于渲染。
就个人而言,我开始通过使用Java绑定来学习OpenGL(如果您使用的是Windows API,这可能会简化操作)。但是,无论您使用哪种绑定,OpenGL规范都保持不变。 OpenGL的所有实现都要求您创建一些窗口/显示以呈现并响应某些基本呈现事件(例如,初始化和窗口调整大小)。
在固定功能管道中,您可以进行如下调用以向屏幕呈现三角形。这些顶点的顶点和颜色在glBegin / End块中描述。
glBegin(GL_TRIANGLES)
glColor3d(1, 0, 0);
glVertex3d(-1, 0, 0);
glColor3d(0, 1, 0);
glVertex3d(1, 0, 0);
glColor3d(0, 0, 1);
glVertex3d(0, 1, 0);
glEnd();
以下是您可能想要访问的一些链接,以了解详情:
- OpenGL Version History
- Swiftless Tutorials(我非常推荐这个!)
- Lighthouse 3D(适用于GLSL)
- Java OpenGL Tutorial
答案 1 :(得分:2)
我认为可悲的事实是你必须更新你的硬件。它在台式电脑上相对便宜(3.3 GPU真的可以拿到咖啡钱),但在移动设备上,你觉得它更有限。
像ANGLE或ARM MALI这样的仿真器主要关注ES,而后者则需要3.2 / 3.3的支持。
话虽这么说,你绝对可以在不运行代码的情况下学习OpenGL,尽管它不那么有趣。除了GL2.1之外,我也在探索WebGL;也许它并不是最先进的,但它足以让很多人去挖掘它。