2010-05-02 7 views
0

저는 쿼드를 가지고 있으며 다른 다각형의 텍스처로 생성하는 그라디언트를 사용하고 싶습니다.다각형에서 텍스처 생성 (OpenGL)

glPushMatrix(); 
glTranslatef(250,250,0); 
    glBegin(GL_POLYGON); 


    glColor3f(255,0,0); 
glVertex2f(10,0); 
glVertex2f(100,0); 
glVertex2f(100,100); 
glVertex2f(50,50); 
glVertex2f(0,100); 

    glEnd(); //End quadrilateral coordinates 

    glPopMatrix(); 
    glBegin(GL_QUADS); //Begin quadrilateral coordinates 

    glVertex2f(0,0); 
glColor3f(0,255,0); 
    glVertex2f(150,0); 
    glVertex2f(150,150); 
    glColor3f(255,0,0); 
    glVertex2f(0,150); 


    glEnd(); //End quadrilateral coordinates 

내 목표는, 당신이 렌더링 할 감사

답변

2

간단하게 유지하십시오!

코드의 그라데이션 질감, 예를 들면 작성하는 것은 매우 간단하다 :

// gradient white -> black 
GLubyte gradient[2*3] = { 255,255,255, 0,0,0 }; 

// WARNING: check documentation, I am not quite sure about syntax and order: 
glTexture1D(GL_TEXTURE_1D, 0,3, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, gradient); 

// setup texture parameters, draw your polygon etc. 

그래픽 하드웨어 및/또는 GL은 (기억 두 가지 색상을 컬러 하나에서 달콤한 찾고 그라데이션을 만들 것입니다 : 이는 하드웨어 가속화 폴리곤 그리기의 기본 장점 중 하나입니다. 소프트웨어에서 보간 작업을 할 필요가 없습니다.

실제 문제는 다음과 같습니다. 어떤 텍스처 좌표를 5 정점 다각형에 사용합니까? 그러나 그것은 당신의 질문이 아니 었습니다. ;-)

+0

나는 이것이 더 간단한 해결책이지만 기술적으로 OP가 요구 한 것이 아니라는 것에 동의한다 : "... [그 poloygon이 만드는 그라데이션]". 폴리곤은 일반적으로 선형 그래디언트를 생성하지 않습니다. 일반적으로 두 축 모두에서 다르기 때문에 폴리곤은 선형 그래디언트를 생성하지 않습니다. 게다가, 텍스처 매핑 문제는 2 차원 그라데이션 텍스처에서는 발생하지 않습니다. 좀 더 정확히 말하면 : 당신이 제시하는 간단한 해결책을 위해서, 처음에는 그라디언트를 생성하는 데 사용되는 각 꼭지점에'glColor3f'를 제공하면 훨씬 간단해질 수 있습니다. 그러나 첫 번째 렌더 패스의 결과는 일반적으로 훨씬 더 복잡합니다. – mnemosyn

1

그렇게하려면이있을 것이다 (어쩌면 질감이 최선 아니다) 5 정점 다각형은 쿼드의 기울기를 확인하는 것입니다 - 투 텍스처. 이는 일반적으로 모든 보드에서 일반적으로 지원되지만 일반적으로 매우 정교한 효과 (예 : 미러)에 사용됩니다.

그래도 그라데이션이면 Paint.Net과 같은 응용 프로그램에서 그래디언트를 만들려고합니다. 런타임에 생성해야하는 경우에는 픽셀 쉐이더를 사용하여 render-to-texture를 구현하십시오. 그러나 픽셀 쉐이더에 대해 몇 마디로 설명하는 것이 다소 힘들다는 것을 두려워하고 있습니다. 그러나 그물에 관한 튜토리얼은 많이 있습니다.

픽셀 쉐이더를 사용하면 그래픽 카드를 많이 제어 할 수 있습니다. 이렇게하면 장면을 임시 버퍼로 렌더링 한 다음 해당 버퍼를 텍스처로 쉽게 적용 할 수있을뿐 아니라 더 많은 기능을 사용할 수 있습니다.

+0

다각형 이외에 선형 그래디언트를 얻는 다른 방법은 없습니까? – jmasterx

+0

"선형 보간법"(그라디언트)은 하드웨어 가속 렌더링의 가장 기본적인 기본 사항 중 하나입니다. 내 대답을 확인하십시오.;) – Frunsi

+0

다른 힌트 : 모든 렌더 투 텍스처 방법은 응용 프로그램에 완전히 과잉입니다. 약간 슬프다. 실용적인 render-to-texture 방법이 그렇게 늦게 가능했다. 많은 (소비자 및 전문가 용) gfx 카드를 지원하려면 작업을 수행하고 올바르게 수행하기 위해 많은 저수준 작업을 수행해야합니다. 우리를 믿어 라.이 작업을 위해 render-to-texture 방식을 사용하지 말라. (RTT 없이는 쉽게 해결할 수있다.) – Frunsi