在OpenGL中获取矩阵堆栈当前大小的方法如下:
首先,确保矩阵堆栈被启用。如果你没有将矩阵作为变换,则不需要它。使用OpenGL函数glEnableVertexAttribArray()启用相应的属性,并使用glGetAttribLocation()获取属性的唯一索引。下面是一个示例代码:
// 顶点在缓冲区的位置
GLfloat vertices[] = {0.5f, 0.5f, 0.0f, 0.0f};
// 顶点属性
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, vertices);
// 启用并设置矩阵堆栈属性
glEnableVertexAttribArray(1); // 启用属性 1
glVertexAttribDivisor(1, 1); // 设置 divisor
GLint matrixStackSize = 0;
glGetAttributei(GL_MATRIX_STACK_BINDING, GL_ACTIVE_MATRIX_STACK_DEPTH, matrixStackSize); // 获取矩阵堆栈属性
这个代码段中,属性的数量(0)指的是顶点缓冲区的大小,而1指的是矩阵堆栈大小,这是你关注的信息。你可以使用glGetIntegeri_v()函数访问属性值。
总之,启用矩阵堆栈并使用glGetAttribLocation()获取属性id1并使用glGetIntegeri_v()获取矩阵堆栈的大小。
此外,还可以使用如下代码:
// 矩阵缓冲区大小
glNamedBufferSubData(matrixBuffer, 0, &matrixStackSize * sizeof(GLint), NULL);
领取专属 10元无门槛券
手把手带您无忧上云