我可以通过指定 glRasterPos2i(WindowX, WindowY);
来绘制文本,并且它可以在窗口内的指定位置绘制文本。
例如:glPrint(150, 150, "dgdg");
其中我的视口(viewport)为 0, 0, 800, 500
。
但是,对正方形做同样的事情是行不通的。所以我尝试再次设置我的 View :
const int W = 800, H = 500;
glViewport(0, 0, W, H);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, W, H, 0, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(1.0f, 1.0f, 0.0f);
glBegin(GL_QUADS);
glVertex2f(100, 100);
glVertex2f(150, 100);
glVertex2f(150, 150);
glVertex2f(100, 150);
glEnd();
但我的方 block 从未出现:l
我禁用了 DepthTesting 和 GL_RECTANGLE_2D。还是不行。
我究竟做错了什么?如何让它在窗口坐标处绘制而不是指定 1.0f 等?
最佳答案
这里工作正常:
#include <GL/glut.h>
void display()
{
glClear( GL_COLOR_BUFFER_BIT );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
double w = glutGet( GLUT_WINDOW_WIDTH );
double h = glutGet( GLUT_WINDOW_HEIGHT );
glOrtho( 0, w, h, 0, -1, 1);
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glColor3f(1.0f, 1.0f, 0.0f);
glBegin(GL_QUADS);
glVertex2f(100, 100);
glVertex2f(150, 100);
glVertex2f(150, 150);
glVertex2f(100, 150);
glEnd();
glutSwapBuffers();
}
int main( int argc, char **argv )
{
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE );
glutInitWindowSize( 640, 480 );
glutCreateWindow( "GLUT" );
glutDisplayFunc( display );
glutMainLoop();
return 0;
}
关于c++ - 用窗口坐标绘制正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17157258/