对于任何了解OpenGL的人

时间:2012-05-19 14:57:17

标签: opengl glut freeglut glu

我很困惑。我一直在尝试使用OpenGL,但我根本没有取得任何成功。

细节: 我似乎一直在尝试使用Mesa 3D,这甚至不是严格意义上的官方OpenGL实现。 Mesa 3D甚至使用gpu吗?我有4.0版(类似于OpenGL 1.3版实现)。我不知道如何获得另一个实现库;我甚至不知道其他人有什么。 (Mesa 3D是我的dev-cpp编译器提供的)

事实上,我并不完全了解OpenGL是什么。

另外,我无法获得freeglut或过剩或过量工作。他们称之为不存在的函数,如gluOrtho和gluPerspective。这是因为使用Mesa 3D吗?有什么方法可以让这些整个库真正起作用吗?

1 个答案:

答案 0 :(得分:3)

  

事实上,我并不完全了解OpenGL是什么。

OpenGL in和它本身只是一个API的规范:你可以调用的一组函数,特殊值和标记以及每个调用的效果。然后,实现遵循此规范以提供可用的OpenGL。

OpenGL是光栅化绘图API,针对3D空间中图元的绘制进行了优化。即您提供3D坐标流和绘图模式,即绘制点,线或三角形,然后OpenGL将3D数据转换为2D屏幕空间并在画布上绘制平面图元。更高版本的OpenGL不再是严格的3D到2D,而是需要所谓的着色器,这些小程序描述了将任意维几何转换为2D屏幕空间。

附加功能是在绘制时将图像数据(纹理)的采样和插值作为附加数据源。


  

详细信息:我似乎一直在尝试使用Mesa 3D,它甚至不是严格意义上的官方OpenGL实现。

为什么呢?如果您使用的是Windows,那么您应该使用GPU驱动程序提供的OpenGL实现,而不是一些随机库(尽管Mesa3D并非完全随机)。

OpenGL实际上并不是您安装的库,它是GPU驱动程序提供的一组功能。对于GPU驱动程序不提供OpenGL的情况,您可以使用软件光栅化器实现。

  

Mesa 3D是否甚至使用gpu?

取决于。在Windows上,Mesa3D只是一个软件光栅化器。但是对于X.org(Linux,FreeBSD等),Mesa3D是GPU驱动程序的开源OpenGL前端,因此如果X.org配置为使用Mesa3D可以使用的驱动程序,那么通过台面获得GPU加速。 / p>

  

我不知道如何获得另一个实现库;我甚至不知道其他人是谁。 (Mesa 3D是我的dev-cpp编译器提供的)

通常,您将OpenGL作为GPU驱动程序的一部分。在Linux上安装开源GPU驱动程序时,会自动安装Mesa3D。但也有封闭的源驱动程序,而且那些使用完全不同的代码库。

这非常重要:您不需要专门的OpenGL库来进行OpenGL开发。

通常你的编译器附带一个" opengl32.lib" (如果在Windows上 - 在其他平台上,您只需告诉链接器链接到系统OpenGL)。然而,这只是链接器的一个目录,实际的OpenGL实现将提供什么。

在Windows上,系统opengl32.dll仅导出OpenGL-1.1。对于上面的任何功能,有一个所谓的扩展机制来加载更高版本的功能。您通常通过库(在本例中为真正的库)来执行此操作,例如GLEW