OpenGL希望您發送0和1之間的相對座標。此外,您每幀都創建一個新變量,因此它們不能在所有幀中遞增。
// box parameters in pixels
int boxleft = 100,
boxbottom = 100;
int boxwidth = 50,
boxheight = 50;
// window dimensions
int screenwidth = 1920,
screenheight = 1080;
for(;;)
{
// clear last frame
glClear(GL_COLOR_BUFFER_BIT);
// calculate screen space coordinates
float left = (float)boxleft/screenwidth,
right = left + (float)boxwidth/screenwidth,
bottom = (float)boxbottom/screenheight,
top = bottom + (float)boxheight/screenheight;
// draw the box
glBegin(GL_QUADS);
glColor3f(r, g, b);
glVertex2f(left, top);
glVertex2f(right, top);
glVertex2f(right, bottom);
glVertex2f(left, bottom);
glEnd();
// shift box for next frame
boxleft++;
}
更新:好的,你說這個廣場用你的座標繪製得很好,所以你可能不會改變它。但在繪製循環之外定義變量至關重要。告訴我這是否適合你。
整個代碼是否粘貼在一個函數中?然後它不能工作,因爲你需要在draws之間保持'x'的值。如果沒有,我們需要更多的上下文 – user1781290