2 текстуры, 1 шейдер - OpenGL ES 2.0

Здесь новичок в ES 2.0. В настоящее время я пытаюсь создать трехмерные чересстрочные изображения из стереоизображений с помощью ES 2.0 и PowerVR SDK. Я могу вывести одну текстуру изображения нормально, но когда я пытаюсь вывести вторую, мне кажется, что я перезаписываю первую. Итак, у меня вопрос, учитывая приведенный ниже фрагментный шейдер, могу ли я использовать его для рисования двух текстур, или же форма sampler2d может быть привязана только к одному текстурному блоку? Вот фрагментный шейдер (взятый из примеров программ PowerVR "обучающего курса"):

    uniform sampler2D sampler2d;\
    varying mediump vec2    myTexCoord;\
    void main (void)\
    {\
        gl_FragColor = texture2D(sampler2d,myTexCoord);\
    }";

И вот как я загружаю текстуры изображения в шейдер:

//LEFT IMAGE
glActiveTexture(GL_TEXTURE0);
glGenTextures(1, &m_uiTexture_left);                                    
glBindTexture(GL_TEXTURE_2D, m_uiTexture_left);
glUniform1i(glGetUniformLocation(m_uiProgramObject, "sampler2d"), 0);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, pwr2Width, pwr2Height,0, GL_RGB, GL_UNSIGNED_BYTE, xImageL); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
GLfloat afVertices[30] = {0.0};
genVertices(afVertices);
glGenBuffers(1, &m_ui32Vbo_leftimage);                                  
m_ui32VertexStride = 5 * sizeof(GLfloat); // 3 floats for the pos, 2 for the UVs
glBindBuffer(GL_ARRAY_BUFFER, m_ui32Vbo_leftimage);
glBufferData(GL_ARRAY_BUFFER, 6 * m_ui32VertexStride, afVertices, GL_STATIC_DRAW);  
glBindBuffer(GL_ARRAY_BUFFER, 0);

//RIGHT IMAGE
glActiveTexture(GL_TEXTURE1);
glGenTextures(1, &m_uiTexture_right);                                   
glBindTexture(GL_TEXTURE_2D, m_uiTexture_right);
glUniform1i(glGetUniformLocation(m_uiProgramObject, "sampler2d"), 1);   
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, pwr2Width, pwr2Height,0, GL_RGB, GL_UNSIGNED_BYTE, xImageR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glGenBuffers(1, &m_ui32Vbo_rightimage);                     
m_ui32VertexStride = 5 * sizeof(GLfloat); // 3 floats for the pos, 2 for the UVs
glBindBuffer(GL_ARRAY_BUFFER, m_ui32Vbo_rightimage);
glBufferData(GL_ARRAY_BUFFER, 6 * m_ui32VertexStride, afVertices, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);

Итак, этот код просто перезаписывает форму sampler2d? Нужна ли мне другая форма или шейдер для второго изображения?

8
задан Stereoscopic 29 January 2012 в 13:59
поделиться