나는 텍스처 렌더링이 어떻게 작동하는지에 대한 기초를 얻고 pyopengl로 작업하고있다.pyopengl에서 텍스처 렌더링하기
빨간 책에서 자습서까지 일부 문서를 읽었지만 프로그램에서 텍스처를 렌더링하지 않습니다. 그리면 그려지는 객체 표면의 색상이 변경됩니다 (어둡게). 여기
은 관련 코드입니다, 이미지 파일을 읽는 기능, 텍스처 속성을 설정하고 그것을 가능하게def generateTexture(texPath):
im = Image.open(texPath)
texData = im.tostring('raw', 'RGBX', 0, -1)
texName = [0]
glGenTextures(1, texName)
glBindTexture(GL_TEXTURE_2D, texName[0])
glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP)
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, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, texData)
glEnable(GL_TEXTURE_2D)
return texName
와 객체의 정점 시각화 목록을 생성하는 기능
def showVertices(obj):
Vertices_List = glGenLists(1)
glNewList(Vertices_List,GL_COMPILE)
texNames = generateTexture('tex_stone.jpg')
glBindTexture(GL_TEXTURE_2D, texNames[0])
glColor3f(1.0,1.0,1.0)
glBegin(GL_POINTS)
i=0
while i < obj.nv:
glNormal3f(obj.vnormals[i].x, obj.vnormals[i].y, obj.vnormals[i].z)
glTexCoord2f(obj.texcoords[i].x, obj.texcoords[i].y)
glVertex3f(obj.vertices[i].x,obj.vertices[i].y,obj.vertices[i].z)
i = i + 1
glEnd()
glEndList()
return Vertices_List
나는 이것이 문제라고 생각하지 않지만 각 객체의 텍스처 좌표를 수동으로 계산하고있다. ('sorrounding sphere'와 객체 중심의 벡터의 교차점을 계산한다. 각각의 버텍스).
코드의 다른 부분을 보려면 여기로 문의하십시오. 힌트 나 조언을 많이 부탁드립니다.
편집이 : 아마 문제가 나는 그것이 표면에 질감을 적용하기 위해서는, glBegin(GL_POINTS)
와 함께 glTexCoord2f()
을 사용하고 있다는 것입니다, GL_QUADS
, GL_TRIANGLES
또는 기타 표면에 사용되어야 하는가? 것은 내 물건의 측면이 결정된 다각형 유형으로 구성되지 않는다는 것입니다 : 주로 삼각형이지만 사변형이 있습니다.
글쎄, 그게 다야. 'glTexCoord2f()'호출을 객체의 측면을 계산하는 함수로 옮겼습니다 : – freieschaf
중복 응답은 유감입니다. 아직 stackoverflow 인터페이스에 익숙하지 않습니다. – freieschaf