【问题标题】:opengl rotation using gldrawpixels使用gldrawpixels的opengl旋转
【发布时间】:2010-09-18 10:37:47
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: opengl rotation gldrawpixels


    【解决方案1】:

    您不能将 glRotate 与 glDrawPixels 一起使用。

    glDrawPixels 是迄今为止将像素放到屏幕上的最差和性能最低的方法。通过使用糟糕的书面软件光栅化器将像素放在屏幕上,您甚至可以获得更好的性能。

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

    而且纹理确实有效。它们还适用于 GL 1.4 和 Intel 图形芯片组。我自己在这样的芯片组上工作了很长时间。您不会获得现代 ATI 或 NVIDIA 芯片组的性能,但它们也没有那么差。

    我最好的选择是,有人尝试创建非两倍大小的纹理,但没有成功,并认为纹理通常不适用于芯片组。

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

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

    【讨论】:

    • 是的,我愿意。让我们希望他选择一个好吃的地方。
    • 试一试:首先将像素数据加载到纹理然后旋转它会非常慢,但它不会比首先调用 glDrawPixels 慢。
    • @nils:假设有人想从屏幕上获取所有像素,进行一些修改,然后将它们放回屏幕上。他们应该做的是进行更改,将其变成纹理,创建一些东西来放置纹理,然后显示它?
    • @Will,没错。 OpenGL 仅作为输出 API。从屏幕读回像素有效,但性能价格非常高。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多