2010-06-06 5 views
0

텍스처를 바인딩하는 특정한 방법으로 내 gl 컨텍스트를 설정해야합니까? 나는 자습서를 따라 가고있다. 나는 수행하여 시작 : 내 렌더링에서텍스처 바인딩을위한 특수 파라미터는 무엇입니까?

#define checkImageWidth 64 
#define checkImageHeight 64 
static GLubyte checkImage[checkImageHeight][checkImageWidth][4]; 

static GLuint texName; 

void makeCheckImage(void) 
{ 
    int i, j, c; 

    for (i = 0; i < checkImageHeight; i++) { 
     for (j = 0; j < checkImageWidth; j++) { 
      c = ((((i&0x8)==0)^((j&0x8))==0))*255; 
      checkImage[i][j][0] = (GLubyte) c; 
      checkImage[i][j][1] = (GLubyte) c; 
      checkImage[i][j][2] = (GLubyte) c; 
      checkImage[i][j][3] = (GLubyte) 255; 
     } 
    } 
} 


void initt(void) 
{  
    glClearColor (0.0, 0.0, 0.0, 0.0); 


    makeCheckImage(); 
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1); 

    glGenTextures(1, &texName); 
    glBindTexture(GL_TEXTURE_2D, texName); 

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 
     GL_NEAREST); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, 
     GL_NEAREST); 
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, 
     checkImageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, 
     checkImage); 
    engineGL.current.tex = texName; 
} 

내가 할 :

PolygonTesselator.Begin_Contour(); 
      glEnable(GL_TEXTURE_2D); 
       glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); 
       glBindTexture(GL_TEXTURE_2D, current.tex); 

     if(layer[currentlayer].Shapes[i].Contour[c].DrawingPoints.size() > 0) 
     { 
      glColor4f(
       layer[currentlayer].Shapes[i].Color.r, 
       layer[currentlayer].Shapes[i].Color.g, 
       layer[currentlayer].Shapes[i].Color.b, 
       layer[currentlayer].Shapes[i].Color.a); 


     } 

     for(unsigned int j = 0; j < layer[currentlayer].Shapes[i].Contour[c].DrawingPoints.size(); ++j) 
     { 
      gluTessVertex(PolygonTesselator.tobj,&layer[currentlayer].Shapes[i].Contour[c].DrawingPoints[j][0], 
       &layer[currentlayer].Shapes[i].Contour[c].DrawingPoints[j][0]); 
     } 

     PolygonTesselator.End_Contour(); 
      } 
      glDisable(GL_TEXTURE_2D); 
    } 

그러나 여전히 색상과 전혀 텍스처를 렌더링합니다. 나는 최소한 흑인이나 무언가를 보길 기대하지만 바인딩은 실패한 것처럼 보인다. 내가 놓친 게 있니?

감사합니다.

+0

텍스처가 매핑되지 않은 이유를 알아낼 수 없습니다 ... – jmasterx

답변

0

자외선을 설정하지 않은 것 같습니다.

편집 : GL_DECAL 대신 GL_MODULATE를 사용하여 차이가 있습니까? (당신이 제공하지 않은 코드에 문제가 있다고 생각하기 때문에 여기에 추측을하고 있습니까? 아니면 gluTessVertex 그 자체에 ...

+0

예 자외선은 tesselator 콜백을 사용하지만 이것들이 없어도 여전히 glcolor 이외의 다른 문자를보아야합니다 – jmasterx

+0

크기를 조정할 때 컨텍스트를 다시 시작하기 때문에 텍스처 크기가 작아 졌음을 알았습니다. 제대로 크기를 조절하는 데 도움이 필요합니다 .http : //stackoverflow.com/questions/2985297/resizing-opengl-frame-properly – jmasterx

관련 문제