为什么我的 openGL 顶点缓冲区对象不会绘制任何内容?
Why won't my openGL vertex buffer object draw anything?
我正在尝试使用gldrawelements/arrays函数在OpenGL 4中渲染模型。我目前正在阅读带有顶点数据和多边形索引的文件。我无法在屏幕上显示任何内容,除了IM使用的轴供参考。我已经成功地使用了这种通用方法。我不知道我可能做错了什么,几乎被困了几天。
这是我缓冲我的数据的地方
// get position of "in vec4 vPosition;" from shader program
// displays axes properly
vPosition = glGetAttribLocation( program, "vPosition" );
// create buffers
glGenVertexArrays(2, vao);
glGenBuffers( 3, vbo );
// here I bind vao[0] and vbo[0] then buffer
// a set of XYZ axes which display correctly
// buffer model
glBindVertexArray( vao[1] );
glBindBuffer( GL_ARRAY_BUFFER, vbo[1] );
glBufferData( GL_ARRAY_BUFFER, sizeof(board->verts),
board->verts, GL_STATIC_DRAW );
glEnableVertexAttribArray( vPosition );
glVertexAttribPointer( vPosition, 4, GL_FLOAT, GL_FALSE, 0,
BUFFER_OFFSET(0));
glBindBuffer( GL_ELEMENT_ARRAY_BUFFER , vbo[2] );
glBufferData(
GL_ELEMENT_ARRAY_BUFFER,
sizeof(board->indices),
board->indices.data(),
GL_STATIC_DRAW);
fyi板是冲浪板的模型,其中读取了gldrawelements的顶点和索引。如果在呼叫Glbufferdata
的呼叫上方,这些顶点和索引正确打印出来。for( int i = 0; i < board->numVerts; i++ ){
std::cerr << i << ": "<<board->verts[i].x << " "<<board->verts[i].y<<" "<<
board->verts[i].z << " " << board->verts[i].w << std::endl;
}
如果放置了类似的打印循环,则索引也是如此。这是我尝试绘制模型的地方:
void draw_model(){
glUniform4fv( color_loc, 1, glm::value_ptr(blue));
glBindVertexArray( vao[1] );
glDrawArrays( GL_LINE_STRIP, 0, 600 );
//glDrawElements(
// GL_LINES,
// board->indices.size(),
// GL_UNSIGNED_INT,
// NULL
//);
}
绘制的调用(已注释)没有显示任何内容。对抽签的呼吁是一项故障排除的努力,以查看我是否只是错误地使用了绘图(我过去只使用了绘制片)。董事会定义为model3d *board
。这是它的班级
class model3d{
public:
glm::vec4 *verts;
std::vector<int> indices;
int numVerts;
int numPolys;
model3d( const char*, const char* );
private:
void load_coords( const char* );
void load_polys( const char* );
};
为什么我的数据似乎没有缓冲?
不使用sizeof(board->verts)
,因为它只会返回指针的大小。
相关文章:
- OpenGL 着色器不绘制任何东西 - 糟糕的精灵类
- 是否有任何内置的哈希图函数来处理 c++ 中的值输入?
- 是否有任何内置函数可以检查给定的两个数字在给定整数数组中的顺序是否相同?
- C++ 中是否有任何内置阶乘函数?
- 是否有任何内置函数可以告诉编译器分支是否可预测
- 使用 glDepthFunc(GL_GREATER) 不会绘制任何内容
- OpenGL 3.3不能绘制任何东西
- DirectX不绘制任何内容
- OpenGL + SDL + glew 在成功初始化后不会绘制任何内容
- 为什么我的 openGL 顶点缓冲区对象不会绘制任何内容?
- 我需要在C /C#中使用图形.我可以使用任何内置的C /C#库
- 是否有任何内置类可以处理C 中的大整数值
- Opengl 3.3 不会绘制任何东西。使用 GLSL 330 内核
- OpenGL - 重新绑定 glBindVertexArray 不会在屏幕上绘制任何内容
- 如何将顶点位置传递给顶点着色器.我写了一个着色器,它不会在屏幕上绘制任何内容
- c ++中是否有任何内置功能可以在计划的时间运行任务
- glDrawElements不绘制任何东西
- 是否有任何内置的 UTF 在 c++ 在窗口中
- OpenGL着色器没有绘制任何东西:/
- Android NDK中的OpenGL ES 2.0:没有绘制任何内容