gpt4 book ai didi

opengl - 如何使用glCopytexImage2D

转载 作者:行者123 更新时间:2023-12-04 06:49:23 28 4
gpt4 key购买 nike

我正在尝试类似

glEnable(texture_2d)
glBindTexture
glCopyTexImage2D
glDisable(GL_TEXTURE_2D);

我认为glCopyTexImage2D不能用于非二次幂图像,所以这是一个问题。我也尝试过glReadPixels,但是对于我的目的来说太慢了。

最佳答案

如果glReadPixels对您来说太慢,那么glCopyTexImage2DglCopyTexSubImage2D不会快很多。在支持帧缓冲对象的平台(例如iOS)上,将GPU渲染的图像数据转换为纹理的建议(即更快)的方法是使用该纹理作为帧缓冲对象的颜色附件,然后直接将其渲染。就是说,如果您仍然想采用这种方法,则需要采取以下措施加以解决:

首先,您要向glCopyTexImage2D传递错误的参数。第三个参数internalformat可能应该是GL_RGBA而不是0。如果您在调用glGetError之后调用了glCopyTexImage2D,则可能已经获得GL_INVALID_OPERATION。有关glCopyTexImage2DglCopyTexSubImage2D的信息,请参见OpenGL ES 1.1手册页。

其次,正如您已经观察到的,glCopyTexImage2D要求它的width和height参数也必须是2的幂。解决此问题的正确方法是使用glTexImage2D分配纹理图像(您可以在此处将NULL传递给pixels),然后使用glCopyTexSubImage2D将帧缓冲区内容复制到矩形中。请注意,glCopyTexSubImage2D不使用internalformat参数-因为它正在更新纹理的子矩形,所以它使用纹理的现有格式。

根据记录,在OpenGL ES 1.1或2.0中不存在glGetTexImage,这就是为什么要获取隐式声明的原因。

关于opengl - 如何使用glCopytexImage2D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3073796/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com