ho 9 quad fatte di triangoli, come questo:Usa consistenza diversa per i triangoli specifici in VBO
che sto usando VBO
per memorizzare i dati su di loro - la loro posizione e le coordinate texture.
La mia domanda è: è possibile che il quad 5 abbia una trama diversa rispetto al resto dei quad utilizzando solo uno VBO
e shader
? :
colore verde rappresenta texture 1 e giallo - struttura 2.
Finora ho ottenuto:
GLfloat vertices[] = {
// Positions
0.0f, 0.0f,
...
// Texture coordinates
0.0f, 0.0f,
...
};
Sto creando VBO
utilizzando tale vertices[]
array, e poi Ho vincolato la mia prima texture m_texture1
(ho anche accesso alla seconda versione - m_texture2
) e ho chiamato lo shader:
glBindTexture(GL_TEXTURE_2D, m_texture1);
glUseProgram(program);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_vboId); // for vertex coordinates
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0); // Vertices
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, (void*)(sizeof(GLfloat)*108)); // Texture
glDrawArrays(GL_TRIANGLES, 0, 108);
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
glUseProgram(0);
mio vertex shader:
#version 330
layout (location = 0) in vec4 position;
layout (location = 1) in vec2 texcoord;
out vec2 Texcoord;
void main()
{
gl_Position = position;
Texcoord = texcoord;
}
E frammento di shader:
#version 330
in vec2 Texcoord;
out vec4 outputColor;
uniform sampler2D tex;
void main()
{
outputColor = texture(tex, Texcoord) * vec4(1.0,1.0,1.0,1.0);
}
Quindi, fondamentalmente sto usando qui solo quella consistenza, perché non ho idea di come avrei potuto utilizzare la seconda uno.
Grazie per la risposta. Per essere onesti, ce l'ho in una texture, ma poiché avevo bisogno di stili diversi per la trama esterna e interna (GL_REPEAT e GL_CLAMP) l'ho diviso in due, ma forse è possibile in qualche modo modificare quei parametri solo per quad interno? –
@Mosquito, in questo caso non utilizzare due trame. – Kimi
Ok, grazie ancora. :-) –