2011-11-20 4 views
2

NURBS 표면에 이미지를 매핑하려고합니다. 나는 (-1, -1), (-1, 1), (1,1), (1, -1) 사각형에 같은 간격의 제어점을 13x13 배열로 가지고있다.질감 반복 문제

gluNurbsProperty(nurbs_object, GLU_SAMPLING_TOLERANCE, 50.0); 
gluNurbsProperty(nurbs_object, GLU_DISPLAY_MODE, GLU_FILL); 
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image_width, image_height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); 

문제 I : 다음

gluNurbsSurface(nurbs_object,no_knots,&knots[0],no_knots,&knots[0],u_stride,v_stride,&ctr_points[0][0],u_order,v_order,GL_MAP2_TEXTURE_COORD_2); 
gluNurbsSurface(nurbs_object,no_knots,&knots[0],no_knots,&knots[0],u_stride,v_stride,&ctr_points[0][0],u_order,v_order,GL_MAP2_VERTEX_3); 
gluNurbsSurface(nurbs_object,no_knots,&knots[0],no_knots,&knots[0],u_stride,v_stride,&ctr_points[0][0],u_order,v_order,GL_MAP2_NORMAL); 

내가 내 프로그램을 초기화 매개 변수이다 : 나는 다음과 같은 코드를 사용하여 컨트롤 포인트에 의해 제어되는 NURBS 표면에 텍스처를 매핑하는 것을 시도하고있다 텍스쳐 이미지가 원점을 중심으로 4 번 반복되는 즉, 2x2 텍스처 대신 4 개의 1x1 텍스처가 반복됩니다.

어디로 잘못 가고 있습니까? 어떻게 해결할 수 있습니까?

답변

1

텍스처의 좌표 범위는 [0, 0] -> [1, 1]입니다. 텍스처 배치는 기본적으로 GL_REPEAT으로 설정되어 있으므로 사용 된 좌표는 사용자가 관찰하는 2x2 타일링을 생성합니다.

편집 : 당신은 텍스처 좌표에 사용되는 NURBS 표면을 확장하거나 텍스처의 크기를 조절해야합니다

는 다른 방법을 조정합니다. 후자는 덜 관입 일 수 있습니다.

GLint mmode; 

glGetIntegerv(GL_MATRIX_MODE, & mmode); /* save active matrix stack. */ 
glMatrixMode(GL_TEXTURE); 
glPushMatrix(); 
glLoadIdentity(); 
glScalef(0.5, 0.5, 1.0); 

/* ... draw ... */ 

glPopMatrix(); 
glMatrixMode((GLenum) mmode); /* restore active matrix stack. */ 
+0

어떻게 해결할 수 있습니까? – Anand