使用 gldrawpixels 的 opengl 旋转

标签 opengl rotation gldrawpixels

我的团队目前仅限于在 opengl 1.4 平台上绘制图像,这意味着我们不能使用任何漂亮的纹理映射来绘制图像(是的,我们仅限于使用 intel 集成图形平台,这很烦人)。到目前为止,我们能够绘制、缩放和翻转图像,但是做图形的人声称在使用 glDrawPixels 时无法通过 glRotate 进行旋转,我们必须转到纹理等等,这在英特尔平台上不起作用。

我打赌他午餐有一个旋转功能,比如glRotate,它适用于直位图。有这样的功能吗? glRotate 会起作用吗?我对这个图形事物有点新手,但库不允许位图旋转,除非通过纹理旋转,这似乎很荒谬。

谢谢。

最佳答案

不能将 glRotate 与 glDrawPixels 一起使用。

glDrawPixels 是迄今为止将像素显示到屏幕上的最差且性能最低的方法。通过使用写得不好的软件光栅器将像素放到屏幕上,您甚至可以获得更好的性能。

简而言之,glDRawPixels 会将像素数据从进程内存复制到图形内存,并将执行一些非常简单的转换,如翻转和缩放。更高级的一切(如旋转)都需要您实际使用图形芯片组的功能。例如。你必须使用纹理。

纹理确实有效。它们也适用于 GL 1.4 和英特尔图形芯片组。我自己已经在这样的芯片组上工作了很长一段时间。您不会获得现代 ATI 或 NVIDIA 芯片组的性能,但它们不是 那个也不好。

我最好的赌注是有人试图创建非 2 次幂的纹理,但失败了,并认为纹理通常不适用于芯片组。

这不是真的。他们确实工作。您只需要知道 OpenGL 要求您以二维的幂创建纹理,并且您必须使用较大纹理的子矩形或将多个图像放入一个非常大的纹理中(后者称为纹理图集)。

您可以通过调整纹理坐标来补偿较大纹理中的较小图像。

关于使用 gldrawpixels 的 opengl 旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/223894/

相关文章:

c++ - OpenGL + libpng : wrong colors on image

opengl - 相当于在 GPU 内存上运行的 glDrawpixels 吗?

java - Java OpenGL 绑定(bind)中的 GLU.gluLookAt 似乎什么都不做

qt - QGLWidget和硬件加速?

OpenGL和无限光位?

ios - 使用有效值设置 SCNNode 的旋转,但它始终为 0,0,0,0

ios - Google Maps iOS 禁用旋转和倾斜

iphone - 在 iPhone 上按下 Controller 时翻转动画