텍스쳐 렌더링 과정에 문제가 있습니다. width = height = 512로 장면을 렌더링하면 거의 오류가 없지만 텍스처와 장면이 작을수록 더 많은 오류가 발생합니다. 오류는 텍스처의 영역이 검은 색이며, 의미가 없습니다. 여기 텍스쳐 렌더링 - 세부 묘사 수준
는 스크린 샷입니다512 * 512 : http://www.ld-host.de/uploads/images/d9452fa0ba28494830fd96f0f15b9eba.png 128 * 128 : 여기
http://www.ld-host.de/uploads/images/a39c141282a622f086d4a96b070a56a3.png 나는 질감으로 렌더링하고 나중에
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
gluLookAt(0,0,200,0,0,-1,0,1,0)
self.fbos = glGenFramebuffersEXT(1)
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, self.fbos)
self.depthbuffers = (glGenRenderbuffersEXT(1)
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, self.depthbuffers)
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, width, height)
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, self.depthbuffers)
self.textures = glGenTextures(1)
glBindTexture(GL_TEXTURE_2D, self.textures)
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR)
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, None);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, self.textures, 0);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, self.fbos);
glEnable(GL_CLIP_PLANE0)
glEnable(GL_CLIP_PLANE1)
glClipPlane(GL_CLIP_PLANE0, (0,0,1,-1 * self.start + self.diff))
glClipPlane(GL_CLIP_PLANE1, (0,0,-1,self.start))
# render the mesh
glTranslatef(-64,-64,-64)
glEnableClientState(GL_VERTEX_ARRAY) # Enable something in OpenGL
glEnableClientState(GL_COLOR_ARRAY) # Enable something in OpenGL
glBindBuffer(GL_ARRAY_BUFFER,self.vbo[1])
glColorPointer(3,GL_FLOAT,0,None) # Tell OpenGL that it contains only ColorValues
#Now the vertex Buffer with positions
glBindBuffer(GL_ARRAY_BUFFER,self.vbo[0])
glVertexPointer(3,GL_FLOAT,0,None) # Tell OpenGL that it contains the Positions for each Points
glDrawArrays(GL_TRIANGLES,0,len(self.verts)+len(self.color)) # Merge both
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisable(GL_CLIP_PLANE0)
glDisable(GL_CLIP_PLANE1)
glBindTexture(GL_TEXTURE_2D,0)
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
#Plane for showing texture
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
gluLookAt(0,0,1,0,0,0,0,1,0)
glClearColor(1,1,1,0)
glEnable(GL_TEXTURE_2D)
glBindTexture(GL_TEXTURE_2D, self.textures)
glBegin(GL_QUADS)
glNormal3f(0.0, 1.0, 0.0)
glTexCoord2f(0.0, 0.0)
glVertex3f(-1, 1, -1)
glTexCoord2f(1.0, 0.0)
glVertex3f(1, 1, -1)
glTexCoord2f(1.0, 1.0)
glVertex3f(1, -1, -1)
glTexCoord2f(0.0, 1.0)
glVertex3f(-1, -1, -1)
glEnd();
glDisable(GL_TEXTURE_2D)
pygame.display.flip()
어떻게 할 수있는 텍스처를 사용하는 방법 내 코드입니다 나는 작은 질감을 위해 더 좋은 품질을 얻었습니까? 메쉬에는 구멍이 없지만 때때로 질감이 있습니다.
내가 무엇을 렌더링하려고하는지 잘 모르겠습니다. 512^2 텍스처가 맞고 단지 더 작게 만들고 싶습니까? – kolenda
정확히,하지만 512^2를 렌더링 한 다음 128^2로 크기를 조정하고 싶습니다. 직접 128^2를 렌더링하고 싶습니다. 그러므로 나는 파이 게임 표면의 너비와 높이를 128로 설정했다. OpenGL과 동일하다. 하지만 그때 그 오류가 발생합니다 – glethien
'오류'가 없습니다 - 그것의 단지 작은 버전입니다. 나는 그 안에 마법이 없다고 생각합니다 - 당신은 그 붉은 부분을 더 크게 만들 필요가 있습니다, 그래서 그들은 작은 질감으로 볼 수 있습니다. 사용한 모델/자료를 보여줄 수 있습니까? 이 그림들에서 내가 그린 그림을 상상할 수는 없습니다. – kolenda