Hello,
I guess I have a weird problem which I am not sure how to fix. This code seems to have worked before but now I get a blank screen.
I get an “invalid value” right after all of my glEnableVertexAttribArray function calls.
Any idea why that might be?
Thank you for your time.
void LoadIntoOpenGL() {
GLenum errCode;
const GLubyte *errString;
if (AssociatedItem < 1) {
glGenVertexArrays(1, &Pointer_VAO);
glBindVertexArray(Pointer_VAO);
// Create Vertex Buffer Object
glGenBuffers(1, &Vertex_VBO);
if ((errCode = glGetError()) != GL_NO_ERROR) {
errString = gluErrorString(errCode);
fprintf(stderr, "OpenGL Error: %s
", errString);
}
// Save vertex attributes into GPU
glBindBuffer(GL_ARRAY_BUFFER, Vertex_VBO);
if ((errCode = glGetError()) != GL_NO_ERROR) {
errString = gluErrorString(errCode);
fprintf(stderr, "OpenGL Error: %s
", errString);
}
glBufferData(GL_ARRAY_BUFFER, TotalVertexCount * Vertex_Stride * sizeof(GLfloat), &AllVertices[0], GL_STATIC_DRAW);
if ((errCode = glGetError()) != GL_NO_ERROR) {
errString = gluErrorString(errCode);
fprintf(stderr, "OpenGL Error: %s
", errString);
}
glEnableVertexAttribArray(Vertex_VBO);
if ((errCode = glGetError()) != GL_NO_ERROR) {
errString = gluErrorString(errCode);
fprintf(stderr, "OpenGL Error: %s
", errString);
}
glVertexAttribPointer(Vertex_VBO, Vertex_Stride, GL_FLOAT, GL_FALSE, 0, 0);
if ((errCode = glGetError()) != GL_NO_ERROR) {
errString = gluErrorString(errCode);
fprintf(stderr, "OpenGL Error: %s
", errString);
}
delete[] Vertices;
if (HasNormals)
{
glGenBuffers(1, &Normal_VBO);
glBindBuffer(GL_ARRAY_BUFFER, Normal_VBO);
glBufferData(GL_ARRAY_BUFFER, TotalVertexCount * Normal_Stride * sizeof(GLfloat), &AllNormals[0], GL_STATIC_DRAW);
glEnableVertexAttribArray(Normal_VBO);
glVertexAttribPointer(Normal_VBO, Normal_Stride, GL_FLOAT, GL_FALSE, 0, 0);
if ((errCode = glGetError()) != GL_NO_ERROR) {
errString = gluErrorString(errCode);
fprintf(stderr, "OpenGL Error: %s
", errString);
}
delete[] Normals;
}
if (HasUVs)
{
glGenBuffers(1, &UV_VBO);
glBindBuffer(GL_ARRAY_BUFFER, UV_VBO);
glBufferData(GL_ARRAY_BUFFER, TotalVertexCount * UV_Stride * sizeof(GLfloat), &AllUVs[0], GL_STATIC_DRAW);
glEnableVertexAttribArray(UV_VBO);
glVertexAttribPointer(UV_VBO, UV_Stride, GL_FLOAT, GL_FALSE, 0, 0);
if ((errCode = glGetError()) != GL_NO_ERROR) {
errString = gluErrorString(errCode);
fprintf(stderr, "OpenGL Error: %s
", errString);
}
delete[] UVs;
}
glGenBuffers(1, &Index_VBO);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, Index_VBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, TotalPolygonCount * Triangle_Vertex_Count * sizeof(GLuint), &ALLIndices[0], GL_STATIC_DRAW);
if ((errCode = glGetError()) != GL_NO_ERROR) {
errString = gluErrorString(errCode);
fprintf(stderr, "OpenGL Error: %s
", errString);
}
delete[] Indices;
glBindVertexArray(0);
}
}