没有着色器的纹理缓冲对象

时间:2014-12-10 22:36:03

标签: c++ opengl textures

所有在线教程均以opengl 3+编写,并使用着色器。

我想知道,我可以创建纹理缓冲区对象并显示纹理而不使用着色器吗?在非常古老的opengl uber中弃用api调用你可以写gltexcoord,我只是试着这样看看我的装载机是否正常,而且没关系。

使用TBO我遇到了一些问题..

假设我正在创建一个四元组,然后在加载图像(名为txtr)后,我将坐标存储在一个向量中

terrainTBO.push_back(1);
terrainTBO.push_back(1);

terrainTBO.push_back(0);
terrainTBO.push_back(1);

terrainTBO.push_back(1);
terrainTBO.push_back(0);

terrainTBO.push_back(0);
terrainTBO.push_back(0);

然后,在初始化地形的过程中我正在做 (显然我不是在这里写关于顶点和索引的)

glBindBuffer(GL_ARRAY_BUFFER, *texture_buffer);
glBufferData(GL_ARRAY_BUFFER, vectorSizeOf(*texture_indices), &(*texture_indices)[0], GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);

在绘图部分:

glEnable(GL_TEXTURE_2D);
glhBindTexture(txtr);

glBindBuffer(GL_ARRAY_BUFFER, *vboId);
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,0,0);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);

glBindBuffer(GL_ARRAY_BUFFER, *tboId);
glVertexAttribPointer(1,2,GL_FLOAT,GL_FALSE,0,0);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER, 0);

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, *iboId);
glDrawElements(GL_TRIANGLES, (*indices).size(), GL_UNSIGNED_INT, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);

glDisable(GL_TEXTURE_2D);

正确创建四边形,但没有显示纹理..如何实现纹理?在这些情况下是否强制着色?

0 个答案:

没有答案