Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何正确使用OpenGl学习OpenGlhttp://www.opengl-tutorial.org/?_C++_Opengl - Fatal编程技术网

C++ 如何正确使用OpenGl学习OpenGlhttp://www.opengl-tutorial.org/?

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

我按照说明安装了库并编译了教程源代码,当我尝试运行它时,我得到了:

无法打开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中大量使用。