我正在尝试实现模型加载,但遇到一个问题。当我尝试绘制网格(出于测试目的而手工编写的单个纹理四边形)时,由于某种原因,与第一个顶点关联的重复数据被传递到顶点着色器(RenderDoc 屏幕)。
这是一个使用我的类的精简版本的示例,它仍然表现出这种行为:
#define TEST_MESH
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
#include <vector>
void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow* window);
struct Vertex {
float position[3];
float color[3];
};
class Mesh {
public:
Mesh(std::vector<Vertex> vertices, std::vector<unsigned int> indices);
~Mesh();
Mesh(const Mesh&) = delete;
Mesh& operator=(const Mesh&) = delete;
Mesh(Mesh&& other);
Mesh& operator=(Mesh&& other);
void Draw(unsigned int program_id);
std::vector<Vertex> m_Vertices;
std::vector<unsigned int> m_Indices;
private:
unsigned int m_VAO, m_VBO, m_EBO;
void Setup();
void Release();
};
int main() { …Run Code Online (Sandbox Code Playgroud)