2014-08-30 3 views
0

OpenGL을 처음 사용하기에 grafika texture2dProgram을 수정하여 그림 효과 (또는 텍스처의 질감)를 얻을 수있는 방법을 알아 냈습니다. 여기 내 이해가 지금까지 모든 예제에서이다 : (표면 준비 후)Grafika Texture2dProgram을 사용하여 그림 속 그림 그리기 (텍스처 또는 텍스처)

  1. 는 설정 뷰포트

    GLES20.glViewport(0, 0, width, height); 
    
  2. 는 질감과 정점을 가지고

    설정 Drawable2d는

    new Drawable2d(RECTANGLE) 
    
  3. 을 조정
  4. 새 프레임에서 Texture2dProgram t 텍스처가있는 뷰포트에 그려야합니다.

내 이해와 수정을 통해 화면에 그림이 출력되도록하고 싶습니다. 이것을 어떻게 성취합니까?

필자는 두 개의 Texture2dProgram을 만들고 다른 텍스처 ID를 할당하고 하나의 texture2d 프로그램이 더 작은 부분에만 그려지도록 프로젝션 매트릭스를 다른 것으로 전달한다는 것을 이해합니다. 그게 맞습니까? 아니면 제가 빠진 것이 있습니까?

답변

1

Texture2dProgram class은 단지 정점 셰이더와 픽셀 셰이더를 캡슐화하는 GLES 프로그램을 추상화합니다. 다른 쉐이더가 필요한 경우에는 둘 이상 만 필요합니다 (예 : 당신은 "일반"과 "외부"텍스처를 모두 사용하고자합니다.

HardwareScalerActivity을 보면 동일한 프로그램으로 모양을 모두 그려 볼 수 있습니다. 비슷한 것을하고 싶다. Program가 렌더링 어떻게 정의

Drawable2d이 모양을 정의합니다 (당신이 UI에서 그들 사이의 플립 수 있기 때문에 그것은 또한. FlatShadedProgram를 생성), 및 Sprite2d은 위치, 크기 및 모양을 정의합니다. Sprite2d 개체 (surfaceChanged()HardwareScalerActivity 참조)에서 텍스처 ID를 설정합니다.

이 분해는 처음에는 약간 이상하게 보일 수 있지만 OpenGL ES가 작동하는 방식과 잘 맞습니다.

한 가지를 다른 것 위에 렌더링하는 한, Grafika의 GLES 코드는 매우 제한적입니다. 디스플레이에 평행 한 단일 평면에서의 2D 렌더링입니다. 처음 그리는 것은 나중에 그려야 할 것들로 덮어 씁니다. 뷰포트를 엉망으로 만들지 말고 Sprite2d 개체에서 위치와 크기를 설정하십시오.

+0

차가움. 그걸 확인해 보죠. 참조 – kungfoo

+0

을 이용해 주셔서 감사합니다. 이것은 확실히 더 많은 의미가 있습니다. 감사!! – kungfoo

+0

@faaden 이클립스에서 NDK를 사용할 때 자동 완성 기능을 활성화하는 방법을 알려주십시오. –