C++ 如何正确使用OpenGl学习OpenGlhttp://www.opengl-tutorial.org/?
我已经开始学习使用OpenGl 我按照说明安装了库并编译了教程源代码,当我尝试运行它时,我得到了: 无法打开GLFW窗口。如果你有一个英特尔GPU,他们不是3.3 兼容的。请尝试教程的2.1版本 所以我查了一下: 然而,我并不完全理解这个建议。我有一台5年的笔记本电脑,带有Ubuntu 13.10和移动Intel®GM45 Express芯片组x86/MMX/SSE2。根据常见问题OpenGl 我不支持3.3。FAQ建议我无论如何学习OpenGl 3.3 但是,如果不实际运行代码,我如何学习它呢C++ 如何正确使用OpenGl学习OpenGlhttp://www.opengl-tutorial.org/?,c++,opengl,C++,Opengl,我已经开始学习使用OpenGl 我按照说明安装了库并编译了教程源代码,当我尝试运行它时,我得到了: 无法打开GLFW窗口。如果你有一个英特尔GPU,他们不是3.3 兼容的。请尝试教程的2.1版本 所以我查了一下: 然而,我并不完全理解这个建议。我有一台5年的笔记本电脑,带有Ubuntu 13.10和移动Intel®GM45 Express芯片组x86/MMX/SSE2。根据常见问题OpenGl 我不支持3.3。FAQ建议我无论如何学习OpenGl 3.3 但是,如果不实际运行代码,我如何学习它
有没有办法在较旧的硬件上模拟OpenGl 3.3?也许你可以开始学习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();
以下是一些您可能想访问以了解更多信息的链接:-
-(我强烈推荐这一款!)
-(适用于GLSL)
-
也许您可以开始学习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();
以下是一些您可能想访问以了解更多信息的链接:-
-(我强烈推荐这一款!)
-(适用于GLSL)
-
我认为不幸的事实是你必须更新你的硬件。它在台式电脑上相对便宜(3.3GPU可以用咖啡钱买到,真的),但在移动电脑上,我想你的能力更有限 ANGLE或ARM MALI one等可用模拟器主要关注ES,在后一种情况下,无论如何都需要3.2/3.3支持
也就是说,您完全可以在不运行代码的情况下学习OpenGL,尽管它肯定没有那么有趣。除了GL2.1,我也会探索WebGL;也许这不是最前沿的,但对于很多人来说,这已经足够有趣了。我认为可悲的事实是,你必须更新你的硬件。它在台式电脑上相对便宜(3.3GPU可以用咖啡钱买到,真的),但在移动电脑上,我想你的能力更有限 ANGLE或ARM MALI one等可用模拟器主要关注ES,在后一种情况下,无论如何都需要3.2/3.3支持
也就是说,您完全可以在不运行代码的情况下学习OpenGL,尽管它肯定没有那么有趣。除了GL2.1,我也会探索WebGL;也许它不是最前沿的,但对于很多人来说,挖掘它已经足够有趣了。请注意,在您对
glBegin/End
块感到满意之后,您需要开始学习Buffer
s,特别是VertexBufferObjects
,它应该在2.1中得到支持。根据我的经验,这是OpenGL的一个方面,在使用固定的函数管道之后,你需要花费最长的时间来思考它。绝对!我同意glBegin/End是一个很好的起点,但顶点缓冲区对象绝对是一个不错的选择,因为它们允许更高的性能(对于像我这样的游戏开发人员来说至关重要)。缓冲区对象通常在现代OpenGL中大量使用。请注意,在您对glBegin/End
块感到满意之后,您需要开始学习Buffer
s,特别是VertexBufferObjects
,这在2.1中应该得到支持。根据我的经验,这是OpenGL的一个方面,在使用固定的函数管道之后,你需要花费最长的时间来思考它。绝对!我同意glBegin/End是一个很好的起点,但顶点缓冲区对象绝对是一个不错的选择,因为它们允许更高的性能(对于像我这样的游戏开发人员来说至关重要)。缓冲区对象通常在现代OpenGL中大量使用。