我有这种方法
void RectangleRenderer::renderRectangle()
{
glGenBuffers(1, &VBO);
unsigned int verticesSize = 48;
float* vertices = this->createVertices(centerPosition, 0.5);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, verticesSize, vertices, GL_STATIC_DRAW);
}
createVertices方法当前看起来像这样
float * RectangleRenderer::createVertices(const glm::vec3 centerPosition, const float rectangleSize) const
{
float verticesArray[12] = {
0.5f, 0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
-0.5f, -0.5f, 0.0f,
-0.5f, 0.5f, 0.0f
};
return &verticesArray[0];
}
此代码不呈现任何内容,我也不知道为什么。测试时,我意识到,如果将renderRectangle方法更改为以下
void RectangleRenderer::renderRectangle()
{
glGenBuffers(1, &VBO);
unsigned int verticesSize = 48;
float verticesArray[12] = {
0.5f, 0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
-0.5f, -0.5f, 0.0f,
-0.5f, 0.5f, 0.0f
};
float* vertices = &verticesArray[0];
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, verticesSize, vertices, GL_STATIC_DRAW);
}
然后,代码可以完美地工作并具有所需的结果,在这种情况下,该结果是呈现矩形。
我想念什么吗?为什么第二个版本的renderRectangle起作用,而不是第一个版本?