많은 스프라이트를 렌더링하고 싶습니다. 셰이더를 사용하여 각 스프라이트를 색상으로 무지개 효과로 색칠하고 싶습니다. (스프라이트 텍스처는 초기에는 그레이 스케일로되어 있습니다.)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