2012-01-07 4 views
0

glutSolidSphere에 텍스처를 적용하려면 어떻게해야합니까?OpenGl - 텍스처 glutSolidSphere?

내가 시도했지만 작동하지 않습니다이 :

GLuint textureid; 
    glGenTextures(1, &textureid); 
    glBindTexture(GL_TEXTURE_2D, textureid); 
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, "stone.tga"); 
// Planet 
    glDisable(GL_LIGHTING); 
    glBindTexture(GL_TEXTURE_2D, textureid); 
    glutSolidSphere(35.0f, 30, 17); 
    glEnable(GL_LIGHTING); 

어떤 사람이 텍스처를로드하고 활성화하는 방법에 저를 지시 할 수있다.

glutSolidSphere가 이미 텍스처 좌표를 방출한다고 들었으므로 특별한 것을 할 필요가 없습니다.

답변

1

실제로는 glTexImage2D으로 텍스처를 생성하지 않는 것이 문제입니다. 마지막 매개 변수는 빨강, 초록, 파랑, 알파 (다른 매개 변수 - GL_UNSIGNED_BYTEGL_RGBA으로 지정된대로)의 픽셀 채널 색상을 사용하는 byte[]이어야하며 파일 이름이 아니어야합니다.

OpenGL은 파일이 무엇인지, 시스템 특정 파일 시스템에서 파일을 읽는 방법 또는 TGA 파일 형식을 구문 분석하는 방법을 알지 못합니다. 원시 색상 데이터를 예상하므로 이미지를로드하고 구문 분석하여 byte[]을 OpenGL (기술적으로는 첫 번째 요소에 대한 포인터)을 void*으로 전달해야합니다. TGA 파일을 파싱하는 데 필요한 최소 코드를 제공하는 severalguides이 있지만 텍스처로드를 처리하기 위해 FreeImage과 같은 라이브러리를 사용할 수도 있으며 TGA 이상으로 작동합니다.

+0

ur 답장을 보내 주셔서 감사합니다. Robert 저는 이해하지만 U가 완전히 이해할 때까지 잠시있을 것이라고 생각합니다. – Led

+0

매우 기초적으로 설명하면 간단합니다. 컴퓨터에서 적어도 색상은 빨강, 초록, 파랑의 3 가지 색상이 혼합되어 표현됩니다. (투명도 : 알파도 있습니다.) TGA와 같은 파일 형식은 각 픽셀의 색상 값으로 가득 찬'byte []'배열이 아니라 파일 헤더, 압축 등이 있습니다. 필요한 작업은 TGA 텍스처의 모든 초과 부분을 검색하여 미가공의 이미지 데이터 그런 다음 원시 데이터를 OpenGL로 보내면 거기에서 처리됩니다. –

+0

만약 실제로 u가 사실이라면 너무 좋을 것 같습니다 : p ...하지만 어쨌든 UR 도움 주셔서 감사합니다. 로버트, 고맙습니다. – Led