对于了解OpenGL的人

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

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

事实上,我并不完全明白OpenGL是什么。

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


事实上,我并不完全明白OpenGL是什么。

OpenGL本身就是一个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加速。

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

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

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

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

在Windows上,系统opengl32.dll只导出OpenGL-1.1。 对于任何以上的功能,都有所谓的扩展机制来加载更高版本的功能。 你通常通过图书馆(在这种情况下是一个真正的图书馆)像GLEW这样做

链接地址: http://www.djcxy.com/p/38441.html

上一篇: For anyone who understands OpenGL

下一篇: Threading with glut: glutPostRedisplay being ignored