用窗口线绘制正方形
Drawing Square with Window Coords
我可以通过指定glRasterPos2i(WindowX, WindowY);
来绘制文本,它在我的窗口内的指定位置绘制文本。
例如:glPrint(150, 150, "dgdg");
其中我的视口是0, 0, 800, 500
然而,对正方形做同样的事情不起作用。所以我试着重新设置我的视图:
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();
但是我的正方形没有出现:l
我禁用了深度测试和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;
}
您可以在OpenGL代码后添加glFlush()
,以要求缓冲区中的绘图冲洗到窗口。
有关glFlush()
的一些参考,请查看此链接
相关文章:
- 试试完美的正方形,你能给点小费吗
- QuadTree只在窗口的右上角绘制
- 绘制旋转的三角形
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 如何在QT中的自定义视频小工具t上绘制矩形
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- OpenGL绘制三角形而不是正方形
- 无法获取索引缓冲区以在 OpenGL 中绘制正方形
- 如何在 cpp 中绘制带有图案的填充正方形
- 如何使用OpenGL在中心的按钮上绘制正方形
- QPixmap将绘制的正方形的内容复制到另一个图像中
- 如何在opengl中绘制屏幕一小部分大小的正方形网格
- 如何在OpenFrameworks/OpenCV中使用HSV颜色绘制正方形
- 在3.2中使用VAO和VBO绘制OpenGL线条和正方形
- 如何在正方形中绘制淡入淡出的正方形或衰落的圆 win32.
- 如何使用几何着色器从点数据绘制正方形
- 用窗口线绘制正方形
- 在OpenGL中用极坐标绘制正方形
- OpenGL -最简单的方法来绘制一个正方形与纹理
- 在Opengl中从不同颜色的正方形中绘制矩形