OpenGL C#,加载颠倒纹理
有没有办法将 y 坐标翻转的图像加载到 openGL 中? (倒挂)。我正在使用 .NET Bitmap 和 BitmapData 类,并将 BitmapData.Scan0 传递给 OpenGL。
使用 .RotateFlip()
在 CPU 上翻转位图太慢。
除了翻转所有的纹理坐标之外,我可以在我们的引擎中解决这个问题吗?
Is there a way to load images into openGL with the y-coords flipped? (upside down). I'm using the .NET Bitmap and BitmapData classes, and passing BitmapData.Scan0 to OpenGL.
Flipping the Bitmap on the CPU using .RotateFlip()
is too slow.
Aside from flipping all of the texcoords, can I solve this problem in our engine?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您使用片段着色器进行渲染,您可以按照您想要的方式解释 u、v 坐标。将它们颠倒过来应该是微不足道的并且(几乎)免费。
除此之外,只需翻转纹理坐标即可。实现这一点应该不难。
If you render using a fragment shader, you get to interpret the u, v coordinates anyway you want. Turning them upside down should be trivial and (nearly) free.
Other than that, just flip your texture coordinates. It should not be difficult to achieve this.
您应该能够仅更改纹理坐标即可实现所需的翻转。
You should be able to just alter your texture coordinates to achieve the desired flip.
我想答案是否定的。 OpenGl 将指向图像的指针作为纹理数据,但我从未见过任何方法告诉他翻转线条。
I think the answer is no. OpenGl takes a pointer to an image as texture data, and I never seen any way to tell him to flip the lines.
(编辑:忽略,问题是纹理而不是 DrawPixels)
这在 C++ 中对我有用。
问:“如何让 glDrawPixels() 绘制颠倒的图像?”
答:“尝试 glPixelZoom( 1.0, -1.0 )。类似地,可以使用 glPixelZoom() 将图像从左向右翻转。请注意,您可能需要调整光栅位置才能正确定位图像。”
src: http://www.mesa3d.org/brianp/sig97/gotchas.htm
(edit: Disregard, question is textures instead of DrawPixels)
This worked for me in C++.
Q: "How can I make glDrawPixels() draw an image flipped upside down?"
A: "Try glPixelZoom( 1.0, -1.0 ). Similarly, an image can be flipped left to right with glPixelZoom(). Note that you may have to adjust your raster position to position the image correctly."
src: http://www.mesa3d.org/brianp/sig97/gotchas.htm