如何在构造函数中创建 VBO [关闭]

问题描述 投票:0回答:0

我几天前开始从这个网站学习 opengl3学习 OpenGL 并且由于在 webgl 中的先验知识,这对我来说似乎很容易。

因此,我决定在 opengl 中创建一个基本的俄罗斯方块克隆,但我似乎无法理解为什么我会遇到某个错误。

// tetrimino.h
#ifndef __TETRIMINO_H__
#define __TETRIMINO_H__

#include <glad/glad.h>

class Tetrimino
{
    public:
        Tetrimino();
        ~Tetrimino();
    private:
        float vertices[8];
        int indices[6];
        unsigned int vao, vbo;
};

#endif 
// tetrimino.cpp
#include "tetrimino.h"

Tetrimino::Tetrimino()
{
    // initialise vertices
    vertices[0] = 0.0f;
    vertices[1] = 0.0f;
    vertices[2] = 0.0f;
    vertices[3] = 1.0f;
    vertices[4] = 1.0f;
    vertices[5] = 1.0f;
    vertices[6] = 1.0f;
    vertices[7] = 0.0f;

    // initialise vertexArrayObjects and buffers
    glGenVertexArrays(1, &vao);
    glGenBuffers(1, &vbo);
    glBindBuffer(GL_ARRAY_BUFFER, vbo);
    glBindVertexArray(vao);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
    glEnableVertexAttribArray(0);
    glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (void*)0);
    
}

Tetrimino::~Tetrimino(){}

错误似乎在某处

glGenBuffers(1, &vbo);

我只是不明白这个错误的原因是什么。这是VS2022社区版的截图

我已经尝试让 vbo 成为构造函数中的局部变量,但它仍然行不通

c++ opengl-3
© www.soinside.com 2019 - 2024. All rights reserved.