我想渲染許多精靈,並且我想用着色器爲每個精靈着色(彩虹效果)。 (雪碧紋理最初是在灰度)使用SpriteBatch和頂點顏色爲每個精靈設置顏色?
首先我做了一個制服,在那裏我傳遞了一種顏色,我在着色器之外計算了顏色。這工作得很好,但速度太慢。
然後我發現它太慢了,因爲我每次都會將這個制服設置多次。我發現:
[...]着色在OpenGL精靈可以很容易地通過定義頂點顏色來完成。由於這種情況下的頂點由SpriteBatch.draw()定義,因此應該使用SpriteBatch.setColor()設置色調。 [...]
我試着這樣做:
在渲染():
batch.setShader(shader);
batch.setColor(.5f, .3f, 1, 1);
sprite.draw(batch);
batch.setColor(1, 1, 1, 1);
batch.setShader(null);
頂點着色器:
void main() {
v_color = a_color;
v_texCoords = a_texCoord0;
gl_Position = u_projTrans * a_position;
}
片段着色器:
void main() {
v_color = a_color*gl_Color*2.0;
gl_FragColor = v_color * texture2D(u_texture, v_texCoords);
}
好吧,我不熟悉GLSL着色器,也可能是爲什麼現在不繪製任何東西。我想我錯過了一些東西,我無法弄清楚什麼。
我該如何爲一個顏色的精靈着色?這樣它的工作很快?
您不需要自定義着色器,默認的SpriteBatch着色器已經支持着色。 – Xoppa