나는 도니의 예와 비슷한 아주 간단한 OpenGL은 ES 예를 : http://nehe.gamedev.net/tutorial/ios_lesson_02__first_triangle/50001/ 세 가지 색상으로 가득 삼각형 위 그림과 같이잘못된 색상 구현의 OpenGL ES2 - IOS
- 그린, 블루, 레드. 대신 내 애플 리케이션에서 나는 항상 붉은 색으로 채워진 오른쪽 하단 주위에 녹색으로 채워진 상단 정점 주위의 작은 영역과 검은 색으로 채워진 거의 삼각형을 얻는다 ... 그리고 전혀 파란색이 없다.
첫 번째 질문은 다음과 같습니다. 왜 내 삼각형 중간에 색상이 보간되지 않으며 왜 파란색이 전혀 보이지 않습니까?
내 색상 배열을 변경하면 아무런 영향이 없습니다 (예 : 삼각형을 흰색으로 만들려고 할 때 색상이 변하지 않습니다 ... 그 동안 배열에서 Z 좌표를 변경하면 파랑 색을 볼 수 있습니다.
두 번째 질문은 다음과 같습니다. 색상이 변경되면 아무런 변화가없고 위치가 변경되면 색상이 변경되는 이유는 무엇입니까?
어딘가에 나는 어리석은 실수를 저질렀지 만 나는 그것을 잡지 못합니다.
const float colors[] = { // this does not work, triangle still black-green-red
1.0, 1.0, 1.0, 1.0,
1.0, 1.0, 1.0, 1.0,
1.0, 1.0, 1.0, 1.0
};
const float positions[] = { // if i change 3rd index to 1.0 then i will see blue color
-0.5, -0.5, 0.0, 1.0,
0.0, 0.5, 0.0, 1.0,
0.5, -0.5, 0.0, 1.0
};
이 VBO입니다 :
이
는 정점/색상 배열입니다- (BOOL)setupVBO
{
BOOL success = YES;
glGenBuffers(1, &_positionBuffer);
glBindBuffer(GL_ARRAY_BUFFER, _positionBuffer);
glBufferData(
GL_ARRAY_BUFFER,
sizeof(positions) * sizeof(float),
&positions[0],
GL_STATIC_DRAW);
glGenBuffers(1, &_colorBuffer);
glBindBuffer(GL_ARRAY_BUFFER, _colorBuffer);
glBufferData(
GL_ARRAY_BUFFER,
sizeof(colors) * sizeof(float),
&colors[0],
GL_STATIC_DRAW);
return success;
}
렌더링 : 어떤 조언을
- (void)render:(CADisplayLink*)displayLink
{
glClearColor(0.5, 0.5, 0.5, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glBindBuffer(GL_ARRAY_BUFFER, _positionBuffer);
glVertexAttribPointer(_positionSlot, 4, GL_FLOAT, GL_FALSE, 0, NULL);
glBindBuffer(GL_ARRAY_BUFFER, _colorRenderBuffer);
glVertexAttribPointer(_colorSlot, 4, GL_FLOAT, GL_FALSE, 0, NULL);
glDrawArrays(GL_TRIANGLES, 0, 3);
[_glContext presentRenderbuffer:GL_RENDERBUFFER];
}
감사합니다 ...
내가 glColor3f 또는 glColor4f 또는 정말 다른 쉐이더 루틴 등의 호출을 볼 수 없습니다하지 않는다 희망 ... – trumpetlicks
OpenGL ES1 기능을 사용하도록 권장하고 대신 ES2 API를 사용하고 있습니다. – Anonymous