2012-06-08 5 views
1

두 개의 삼각형으로 된 사각형이 있습니다. 왼쪽 상단이 빨간색이어야하고 오른쪽 하단이 파란색이어야합니다. 이제 왼쪽 위부터 오른쪽 아래까지 선형 그래디언트가 필요합니다.OpenGL ES - android - 두 개의 삼각형이있는 사각형 - 선형 그래디언트?

오른쪽 상단과 하단 왼쪽에 색상을 원하지 않습니다. 나는 알파 0을 주려고했지만이 방법은 효과가 없다. 나는 검은 색을 본다.

 float vertices[] = 
    { 
     -1.0f, -1.0f, 
     1.0f, -1.0f, 
     -1.0f, 1.0f, 
     1.0f, 1.0f 
    }; 

    byte maxColor=(byte)255; 

    byte colors[] = 
    { 
     maxColor,  0,  0, maxColor, 
     0,    0,  0,  0, 
     0,    0,maxColor, maxColor, 
     0,    0,  0,  0 
    }; 

    byte indices[] = 
    { 
     0, 3, 1, 
     0, 2, 3 
    }; 

누구나 어떻게 할 수 있습니까?

편집 : 나는 지금 그것을 다르게 해결 한

. 나는 위에서 아래로 기울기로 사각형을 채 웁니다. 그런 다음 사각형을 45도 회전시켜 조금씩 확대합니다.

답변 해 주셔서 감사합니다.

+0

알파 블렌딩을 사용하셨습니까? http://www.opengl.org/archives/resources/faq/technical/transparency.htm – Nobody

+0

색깔이없는 가장자리가 섞이지 않게하려면 (투명하게하십시오) 그렇지 않으면 알파를 바꾸는 것이 의미가 없습니까? 아니면 색상을 지정하지 않아도 선형 그라디언트에서 자동으로 색상을 얻길 원하십니까? –

+0

나는 색깔을 지정할 필요없이 선형 그라디언트에서 자동으로 색상을 얻길 원합니다. 그리고 네, 알파 블렌딩이 가능합니다. – user1405328

답변

0

네가 쿼드에 대해 선형 그래디언트를 얻고 싶다면 두 개의 다른 가장자리가 자동으로 보간에서 색상을 얻은 다음 알파를 사용하지 말고 (보통) 투명도 효과에만 사용됩니다.

일부 정점에는 색상을 지정하고 다른 정점에는 자동 보간을 사용할 수 없습니다. 래스터 라이저는 다른 프리미티브의 정보를 사용하여 마술처럼 선형 그래디언트를 사용하지는 않습니다. 그것은 프리미티브를 가로 지르는 프리미티브 (단일 삼각형의) 꼭지점의 색을 보간합니다. 그래서 다른 꼭지점에 약간의 색을 주어야합니다.

그러나 귀하의 경우에 그것은 비교적 쉽습니다. 귀하의 정점 (-1 +,하지만 누가 신경), 따라서 당신은 당신의 경우 (128, 0, 128)에, 보간에게 자신을 그들에게 정확한 색상을 줄 단지 수, 실제로 "그라데이션"함께 모두 절반 방법 :

byte colors[] = 
{ 
    255, 0, 0, 255, 
    128, 0, 0, 255, 
     0, 0, 255, 255, 
    128, 0, 128, 255 
}; 

래스터 라이저가 개별 삼각형을 개별적으로 보간한다는 사실은 순수 그라디언트에서 벗어난 일부 보간 아티팩트를 가져올 수 있습니다 (그러나 실제로는 그렇지 않을 수도 있음). 이 경우 쿼드의 대각선 (두 삼각형 사이의 경계)이 그라데이션을 따라 이동하거나 그라디언트를 통해 이동하는 경우 차이가 발생할 수 있습니다.

+0

이것은 좋아 보인다. 바이트 색 [] = { 255, 0, 0, 255, 128, 0, 128, 255, 0, 0, 255, 255, 128, 0, 128, 255 }; 하지만, 무작위로 색상을 사용할 때 무엇입니까? 그래서, 나는 반을 가져 가야한다. + -1? – user1405328

+0

@ user1405328 글쎄, 그라디언트를 따라 선형 그래디언트와 모서리 ar을가집니다. 따라서 그 값은 두 종점 색상의 50-50 보간입니다. 물론 이것은 그라디언트 선에 투영 된 모서리 꼭지점의 위치와 관련하여 변경됩니다. –