私はこのように三角形で作られた9つのクワッドを持っています:
私はVBO
それらに関するデータ(それらの位置とテクスチャの座標)を保存するために使用しています。
VBO
私の質問は、クワッド5を、1つだけを使用して、残りのクワッドとは異なるテクスチャにすることは可能shader
ですか?:
緑の色はテクスチャ1を表し、黄色はテクスチャ2を表します。
これまでのところ私は:
GLfloat vertices[] = {
// Positions
0.0f, 0.0f,
...
// Texture coordinates
0.0f, 0.0f,
...
};
VBO
その配列を使用して作成しvertices[]
、最初のテクスチャをバインドしてm_texture1
(2番目のテクスチャにもアクセスできます- m_texture2
)、シェーダーを呼び出します。
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);
私の頂点シェーダー:
#version 330
layout (location = 0) in vec4 position;
layout (location = 1) in vec2 texcoord;
out vec2 Texcoord;
void main()
{
gl_Position = position;
Texcoord = texcoord;
}
そしてフラグメントシェーダー:
#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);
}
つまり、基本的にここでは1つのテクスチャのみを使用しています。これは、2番目のテクスチャをどのように使用できるかわからないためです。