我有一个Android应用程序,它呈现2D地形。 地形由许多地面像素组成。尺寸为480 x 300(地形像素)。
像素呈现为纹理,480 * 300 =几乎150,000,需要5秒 一个新的强大的设备绘制。地形有时不是静态的 使用FBO和渲染到纹理方法只能部分帮助。
简而言之 - 什么是渲染大约150,000个极小纹理(纯色和无细节)的最佳方法?
以下是地形的一小部分: http://imageshack.com/a/img822/3775/8ayq.png
答案 0 :(得分:0)
在没有代码的情况下很难分辨出真正的瓶颈是什么,但是因为你的问题是“在屏幕上渲染150,000个平面颜色纹理的最佳方式是什么,答案是”没有纹理。“
在我看来,最好的方法是创建一个新的顶点属性颜色向量数组, 并像这样使用
//vertex shader
attribute vec4 vertexCoords;
attribute vec4 vertexColor;
varying vec4 fragmentColor;
void main()
{
fragmentColor = vertexColor;
gl_Position = vertexCoords;
}
//fragment shader
varying lowp vec4 fragmentColor;
void main()
{
gl_FragColor = fragmentColor;
}
通过这种方式,您可以在一次绘制调用中绘制整个背景,并且更改背景外观只是glBufferSubData
来电。