2012-05-19 41 views
-2

我很困惑。我一直在尝试着从OpenGL开始,并且我一直没有取得任何成功。对于了解OpenGL的人

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

实际上,我并不完全理解OpenGL是什么。

此外,我无法使freeglut或glut或glu工作。他们正在调用gluOrtho和gluPerspective等不存在的功能。这是由于使用Mesa 3D吗?有什么方法可以让这些整个图书馆实际工作吗?

+3

请在这里发表_specific_问题,每...问题一个问题。那里有一些东西。如果您收到链接器错误,请阅读docs_和_关注您找到的教程和示例。至于“什么是OpenGL”,请使用搜索引擎,那里有大量的信息。 – Mat

+0

我试过使用聊天功能!但没人听。 – Codesmith

回答

3

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

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

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

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


细节:我似乎一直在尝试使用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加速。

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

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

这是非常重要的:你并不需要一个专门的OpenGL库做OpenGL开发。

通常,您的编译器附带一个“opengl32.lib”(如果在Windows上 - 在其他平台上,您只是告诉链接器与系统OpenGL链接)。然而,这只是链接器的内容列表,实际的OpenGL实现将提供什么。

在Windows系统OPENGL32.DLL出口仅OpenGL的1.1。对于任何以上的功能,都有所谓的扩展机制来加载更高版本的功能。通常你做到这一点通过库(在这种情况下,一个真正的图书馆)一样GLEW

+0

感谢您的回答;我想因为没有人像你一样彬彬有礼,我不能回答我的问题。 – Codesmith

+0

@AUTO:我只是扩大了我的答案 – datenwolf