繁体   English   中英

OpenGL纹理加载困境

[英]OpenGL Texture Loading Predicament

好的,所以我制作了一个用于处理基本OpenGL渲染的库。 它包含三个缓冲区,一个用于顶点,uv和法线。 在主渲染函数中,我绑定缓冲区,启用顶点属性,然后调用glDrawArrays()。 但是我遇到了一个意想不到的问题,它是基于工程的而不是基于代码的,即我一次只能绑定一个纹理。 因此,当我绘制所有顶点时,它们将具有相同的纹理。如何解决这个问题? 如果您需要更多资源,我将其发布。

主要渲染功能

glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER,this->_VBO);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER,this->_TBO);
glEnableVertexAttribArray(2);
glBindBuffer(GL_ARRAY_BUFFER,this->_NBO);

glDrawArrays(GL_TRIANGLES,0,this->polyCount);

glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(2);

缓冲区:

//Designated Vertex Buffer
    std::array<GLfloat,BUFFER_SIZE> BUFFER_1;
    UINT bufferIndex1;

    //Designated Normal Buffers
    std::array<GLfloat,BUFFER_SIZE> BUFFER_2;
    UINT bufferIndex2;

    //Designated UV Buffer
    std::array<GLfloat,BUFFER_SIZE> BUFFER_3;
    UINT bufferIndex3;

我们通常会在此处通过“材料”将网格划分为多个子网格。 具有不同纹理的对象从技术上讲是不同的材质,因此您将单独渲染它。 可以使用称为Atlas的东西使用多个纹理渲染单个网格。 也就是说,将纹理打包到单个位图中,然后根据要使用的纹理在该位图中选择纹理坐标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM