2017-11-25 2 views
0

저는 그래픽 개발의 초보자에 불과합니다.왜 와이어 프레임 모드에서 삼각형 모서리가 보이지 않는 이유는 무엇입니까?

이제 cocos2d python (pyglet) 기능을 확장하려고합니다.

내 대상은 플랫폼 게임을 만들기위한 사각형 오브젝트의 make 클래스입니다.

모두 괜찮습니다. 그러나 와이어 프레임 모드로 전환 할 때 - 나는 직사각형의 가장자리를 볼 수 없습니다.

내 솔루션으로 와이어 프레임 모드를 지원하는 방법을 설명하는 사람이 있습니까?

코드 예제 : 그것은 필요로 작동 색상 충전없이

class ExtRect(cocos.cocosnode.CocosNode): 

    def __init__(self, x, y, width, height): 
     super(ExtRect, self).__init__() 
     self.rect = cocos.rect.Rect(x, y, width, height) 

    def draw(self): 

     gl.glPushMatrix() 

     self.transform() 

     gl.glColor4f(0, 0, 0, 1) 

     #...draw... 

     pyglet.graphics.draw_indexed(4, pyglet.gl.GL_TRIANGLE_STRIP, 
      [0, 1, 2, 1, 2, 3], 
      ('v2i', (
       self.rect.x, self.rect.y, 
       self.rect.x + self.rect.width, self.rect.y, 
       self.rect.x, self.rect.y + self.rect.height, 
       self.rect.x + self.rect.width, self.rect.y + self.rect.height 
      )) 
     ) 

     gl.glPopMatrix() 

:

enter image description here

을하지만 glColor4f와 색상을 적용, 에지 disspears :

enter image description here

나 ('c3B', (0, 0, 255, 0) * 4)에 색 값을 추가하려고했습니다. 결과는 같습니다.

+0

오픈 GL 수준에서 논리적 인 설명이 필요합니다. pyglet 출시에 뛰어 들고 싶지 않아도됩니다. –

답변

1

는 OGL에 Primitives의 다른 종류가 있습니다

  • 포인트 프리미티브 : GL_POINTS

  • 라인 프리미티브 : GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP

  • 삼각형 프리미티브 : GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN

포인트 프리미티브는 단일 점을 그립니다. 라인 프리미티브는 선을 그립니다. 다음과 같이 와이어 프레임을 그릴하려는 경우가 의미 glPolygonMode

의 설정에 따라 삼각형의 기본 요소 중 하나 그리기, 점, 선 또는 채워진 다각형은, 당신은 다각형 모드를 설정해야합니다 :

glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); 
+1

"삼각형 프리미티브는 채워진 삼각형을 그립니다"그건 사실이 아닙니다. ['glPolygonMode'] (https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glPolygonMode.xhtml)의 설정에 따라 점, 선 또는 채워진 삼각형을 그립니다. – derhass

관련 문제