2010-06-25 2 views
1

여기 내 문제가 있습니다. 나는 GL_TRIANGLE_STRIP을 사용하여 박스를 그렸습니다. 관련된 텍스처가없고 재질도없고 쉐이더도 없습니다. 나는 단지 색깔의 삼각형을 렌더링하고있다.삼각형 스트립에서 OpenGL이 원치 않는 색상 변색 문제가 있습니다. 삼각형 위에 균일 한 색상을 원하십니까

당신은 그것을 여기에 어떻게 생겼는지 볼 수 있습니다 Fail box

을하지만 당신이 볼 수 있듯이, 나는 약간 투명 색상 페이딩 문제를했습니다. 조명도 활성화되어 있지 않습니다.

여기에 상자를 초기화하고 렌더링하는 데 사용하는 코드.

//here init code 
for(list<Particle*>::iterator p = this->shapes[this->activeShape].particles.begin(); 
       p != this->shapes[this->activeShape].particles.end(); p++) 
      { 
       float yValue = 20.0f; 

       this->vertexArray[this->activeShape][current].Position.x = (*p)->x0.x; 
       this->vertexArray[this->activeShape][current].Position.y = -yValue; 
       this->vertexArray[this->activeShape][current].Position.z = (*p)->x0.y; 


       this->vertexArray[this->activeShape][current + listSize].Position.x = (*p)->x0.x; 
       this->vertexArray[this->activeShape][current + listSize].Position.y = yValue; 
       this->vertexArray[this->activeShape][current + listSize].Position.z = (*p)->x0.y; 

       current++; 
      } 


     // render code 
       glFrontFace(GL_CW); 
       glEnable(GL_BLEND); 

       glVertexPointer(3, GL_FLOAT, sizeof(LsmVertexColor), &this->vertexArray[this->activeShape][0].Position); 
       glEnableClientState(GL_VERTEX_ARRAY); 

       glColor4f(SCULPTY_R, SCULPTY_G, SCULPTY_B, SCULPTY_A); 

       glDrawElements(GL_TRIANGLE_STRIP, 20, GL_UNSIGNED_SHORT, &this->indexArray[this->activeShape][0]); 
       glDrawElements(GL_TRIANGLE_STRIP, 20, GL_UNSIGNED_SHORT, &this->indexArray[this->activeShape][22]); 
       glDrawElements(GL_TRIANGLE_STRIP, 10, GL_UNSIGNED_SHORT, &this->indexArray[this->activeShape][44]); 
       glDrawElements(GL_TRIANGLE_STRIP, 10, GL_UNSIGNED_SHORT, &this->indexArray[this->activeShape][54]); 

저는 OpenGL ES 1.1 (최신 버전이 아닙니다)을 사용하고 있으며 프로그램이 iPhone/iPad에서 실행 중입니다. 추가

+0

정점이 꺼져있는 것처럼 보입니다. 올바르게 루핑하고 있습니까? 당신의 보폭은 무엇입니까? – slf

답변

0

시도 :

glDisable(GL_LIGHTING); 

에는 조명도 기본적으로 경우 정말이 없는지 확인합니다.

+0

내가 그랬고, 여기 렌더링 전에 사용할 수없는 모든 것들의 목록 \t glDisable (GL_TEXTURE_2D); \t glDisable (GL_LIGHTING); \t glDisable (GL_COLOR_MATERIAL); \t glDisable (GL_BLEND); \t glShadeModel (GL_FLAT); \t glDisable (GL_FOG); 기본적으로 OpengGL에서 할 수있는 모든 일 : D – Pencrace

+0

아직 명확하지 않은 경우에 대비하여 작동하지 않습니다. – Pencrace

0

엔진 Sio2 Engine을 사용하고 있다는 것을 잊어 버렸습니다. 난 hardstyle 갔다가 전체 openGL 초기화하고 후크 자신을 redid. 어떤 이유로 glEnable (GL_TEXTURE_2D) 호출 중 하나가 이상한 효과를 나타냅니다.

불행히도 이유를 설명 할 수 없지만 Sio2 엔진을 사용하고 색상 변색 효과가있는 경우 ... GL_TEXTURE_2D를 활성화하는 두 가지 호출 중 하나를 주석 처리하여 해결되는지 확인하십시오. 엔진 코드.

나는 어떤 설명이라도 환영한다. 나는 더 깊이 가서 직접 찾아 볼 시간이 없다.

+0

작은 정확도, 아무 것도 말할 필요가 없습니다. 조금 더 확인했습니다. 작동중인 무언가). 그래서 엔진 파이프 라인을 사용하지 않고 무언가를 렌더링하면 sio2ResourceRender()가 호출 된 후에 렌더링하지 마십시오. – Pencrace

관련 문제