높이가 h
인 실린더 표면에 균일 한 바둑판 텍스처를 적용하고 반경 (a,b)
을 적용하고 싶습니다.실린더의 텍스처 맵핑
:
버텍스 쉐이더 :
varying vec2 texture_coordinate;
float twopi = 6.283185307;
float pi=3.141592654;
float ra = 1.5;
float rb= 1.0;
void main()
{
// Transforming The Vertex
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
// -pi/2 < theta < pi/2
float theta = (atan2(rb*gl_Vertex.y , ra*gl_Vertex.x)+pi*0.5)/pi;
// Passing The Texture Coordinate Of Texture Unit 0 To The Fragment Shader
texture_coordinate = vec2( theta , -(-gl_Vertex.z+0.5));
}
조각 쉐이더 :
varying vec2 texture_coordinate;
uniform sampler2D my_color_texture;
void main()
{
// Sampling The Texture And Passing It To The Frame Buffer
gl_FragColor = texture2D(my_color_texture, texture_coordinate);
}
나는 다음과 같은 옵션을 지정한 클라이언트 측에서 동안 :
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
내 텍스처는 3768x1200 바둑판입니다. 이제 바둑판을 균일하게 유지하기 위해 텍스처를 적용하고 싶습니다 (스트레치가없는 사각형). 그러나 곡선 부분의 타일이 늘어날수록 표면의 곡선이 덜어 진 부분에서만 올바른 종횡비를 얻을 수 있습니다.
텍스처를 왜곡하고 늘리지 않고 텍스처를 적용하는 방법을 이해하고 싶습니다. 텍스처를 늘리지 않고 텍스처를 반복하여 적용하는 것이 좋습니다.
는 나는 또한이 개 국경이 교차 질감의 경계에 이상한 깜빡 거림의 문제가, 어떻게 그것을 해결하기 위해 (이 두 번째 이미지에서 볼 수있다)?
귀하의 문제에 대해 명확하지 않습니다. 정사각형이 "정사각형"이 아니라고 말하지만, 귀하가 질문을 오해하지 않는 한, 원근감있는 각도로 무언가를 볼 때 기대했던대로입니다 . – jcoder
아니요 여기서 원근감은 개체의 모양을 표시하기위한 것입니다.필자가 원하는 것은 타원의 경계에서 타일을 늘리는 것을 방지하기 위해 어떤 종류의 텍스처 좌표 함수를 사용해야하는지입니다. 텍스처 자체를 수정해야합니까? – linello
텍스처를 카메라의 오브젝트에 투영 한 것처럼 텍스처를 매핑하려고합니까? – Bojangles