그래서 나는 another SO question regarding the command glVertexAttribPointer을보고 있었고 약간의 혼란이있었습니다. 이 질문에 대한 허용 대답은GL_ARRAY_BUFFER 버퍼를 여러 개 가질 수 있습니까?
GL_ARRAY_BUFFER 에 바인딩 버퍼에서 읽어을 설명하지만 전화를 걸 경우에도 속성 0 멀리 저장 상태의 추가 암시 조각이있다 : 데이터가 현재
나에게 의미가 있지만, GL_ARRAY_BUFFER
으로 바인드 된 버퍼가 여러 개인 경우 어떻게해야합니까? glVertexAttribPointer()
메서드는 속성을 설정하는 방법을 어떻게 알 수 있습니까?
예를 들어, 내 코드에서 그라디언트 삼각형을 그려야합니다. 이를 위해 2 개의 VBO를 만들었습니다. 하나는 배열에 컬러 데이터가 있고 다른 하나는 정점 위치입니다.
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
static const GLfloat points[] = {
//data here
};
static const GLfloat colors[] = {
//data here
};
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(points), points, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
vs = glCreateShader(GL_VERTEX_SHADER);
fs = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(vs, 1, &vertexShaderData, NULL);
glShaderSource(fs, 1, &fragShaderData, NULL);
glCompileShader(vs);
glCompileShader(fs);
sp=glCreateProgram();
glBindFragDataLocation(sp, 0, "outColor");
glAttachShader(sp, vs);
glAttachShader(sp, fs);
glLinkProgram(sp);
glUseProgram(sp);
glGenBuffers(1, &colorBuffer);
glBindBuffer(GL_ARRAY_BUFFER, colorBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(colors), colors, GL_STATIC_DRAW);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(1);
glDrawArrays(GL_TRIANGLES, 0, 9);
명령을 호출하면 사용할 버퍼를 어디에서 지정해야합니까?