我在制作簡單的繪圖時遇到了麻煩。
我不確定這里的問題是什么,但我有以下幾點:
GLfloat ctrlpoints[13][3] = {
{0.1, 0.1, 0.0},
{0.7, 0.1, 0.0},
{0.9, 0.1, 0.0},
{0.9, 0.3, 0.0},
{0.7, 0.3, 0.0},
{0.6, 0.3, 0.0},
{0.55, 0.25, 0.0},
{0.5, 0.2, 0.0},
{0.2, 0.2, 0.0},
{0.12, 0.2, 0.0},
{0.1, 0.3, 0.0},
{0.07, 0.2, 0.0},
{0.1, 0.1, 0.0} };
我希望代碼中的所有點都連接起來,但它在第 6 組點之后停止。
我的其余代碼:
void init(void)
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 5, &ctrlpoints[0][0]);
glEnable(GL_MAP1_VERTEX_3);
}
void display(void)
{
int i;
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_LINE_STRIP);
for (i = 0; i <= 30; i )
glEvalCoord1f((GLfloat)i / 30.0);
glEnd();
glPointSize(0.5);
glColor3f(1.0, 1.0, 0.0);
glBegin(GL_POINTS);
for (i = 0; i < 12; i )
glVertex3fv(&ctrlpoints[i][0]);
glEnd();
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
uj5u.com熱心網友回復:
根據檔案,第 5 個引數glMap1f是點數。您將其設定為5,這就是用于評估的控制點數。您應該將其替換為 13,或者使用它sizeof來自動計算該數字:
int npoints = sizeof(ctrlpoints)/sizeof(ctrlpoints[0]);
glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, npoints, &ctrlpoints[0][0]);
這不是您要問的,但在此回圈中,您渲染的點數(12 個)也比您宣告的點數(13 個)少:
for (i = 0; i < 12; i )
您應該類似地使用npoints來獲得正確的數字。像這樣的魔術常量很糟糕,正是因為它們會導致此類錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/382573.html
