Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 每帧渲染一个小纹理,然后放大它?_Ios_Objective C_Opengl Es - Fatal编程技术网

Ios 每帧渲染一个小纹理,然后放大它?

Ios 每帧渲染一个小纹理,然后放大它?,ios,objective-c,opengl-es,Ios,Objective C,Opengl Es,在iOS上使用OpenGL,是否可以更新一个小纹理(通过单独设置每个像素),然后将其放大以填充屏幕(每秒60帧)?一般来说,答案是肯定的,这是可能的。但这可能取决于你需要画什么 由于您没有提供更多细节,我将介绍一般方法: 将纹理绑定到帧缓冲区(这是一个很好的解释,其中包含有关如何执行此操作的代码。请参阅“示例6.10.Initialize()for Supersampling”代码示例) 现在以与屏幕上相同的方式绘制所需内容(转换、模型视图矩阵等)。如果你需要像素精度(修改每一个像素),你可以

在iOS上使用OpenGL,是否可以更新一个小纹理(通过单独设置每个像素),然后将其放大以填充屏幕(每秒60帧)?

一般来说,答案是肯定的,这是可能的。但这可能取决于你需要画什么

由于您没有提供更多细节,我将介绍一般方法:

  • 将纹理绑定到帧缓冲区(这是一个很好的解释,其中包含有关如何执行此操作的代码。请参阅“示例6.10.Initialize()for Supersampling”代码示例)

  • 现在以与屏幕上相同的方式绘制所需内容(转换、模型视图矩阵等)。如果你需要像素精度(修改每一个像素),你可以考虑使用正投影。这是否可能,取决于你需要画什么。所有这些绘图都将在纹理上执行,以实现“更新纹理”部分

  • 绑定要在屏幕上绘制的正常帧缓冲区。绘制一个使用上一步纹理的矩形(可能再次使用正交投影)。您可以缩放此矩形以填充屏幕

如果上述方法能够达到60 fps,则取决于目标设备和需要渲染的场景


希望这有帮助

您应该能够使用glTexImage2D更新纹理的内容

未经测试的示例:

GLubyte data[1024]; // 32x32 (power of two) 
for (int i=0; i<1024; i+=4) {
    // write a red pixel  (RGBA)    
    data[i] = 255;
    data[i+1] = 0;
    data[i+2] = 0;
    data[i+3] = 255;
}

glBindTexture(GL_TEXTURE_2D, my_texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);

// then simply render a quad with this texture.
GLubyte数据[1024];//32x32(两个电源)

对于(int i=0;我对将当前场景渲染为纹理不太感兴趣。为了澄清,我想在(屏幕外?)纹理中明确设置每个像素,然后全屏显示(放大,模糊即可)对这一部分来说,对四边形进行纹理处理听起来是一个合理的解决方案。我不清楚的是,是否可以直接设置纹理中的单个像素?如数组访问。或者我会在正交视图中将场景渲染为一系列GL_点以实现相同的效果?据我所知,将像素设置为数组是不可能的。
GL_POINTS
可以是一种方法,如果您可以将整个纹理的值设置为一次全部修改。或者,您可以绘制任何二维几何体,例如,如果渲染四边形(比如屏幕的下半部分)你可以一次修改很多像素。如果你描述你需要在这个纹理上绘制什么,也许我可以提供更多的帮助,一旦我将它设置为2的幂。Thx。