glViewport 用例

简介:

说明

    glViewport决定了将OpengGL渲染的图形,显示在屏幕的什么位置,第一和第二参数决定开始渲染的位置,后两个参数分别为宽和高


代码

#include <gl/glut.h>


void display()

{

  glClear( GL_COLOR_BUFFER_BIT );

  glColor3f( 1.0, 0.0, 0.0 );

  //画分割线,分成四个视见区

  glViewport( 0, 0, 400, 400 );

  glBegin( GL_LINES );

  glVertex2f( -1.0, 0 );

  glVertex2f( 1.0, 0 );

  glVertex2f( 0.0, -1.0 );

  glVertex2f( 0.0, 1.0 );

  glEnd();


  //定义在左下角的区域

  glColor3f( 0.0, 1.0, 0.0 );

  glViewport( 0, 0, 200, 200 );

  glBegin( GL_POLYGON );

  glVertex2f( -0.5, -0.5 );

  glVertex2f( -0.5, 0.5 );

  glVertex2f( 0.5, 0.5 );

  glVertex2f( 0.5, -0.5 );

  glEnd();



  //定义在右上角的区域

  glColor3f( 0.0, 0.0, 1.0 );

  glViewport( 200, 200, 200, 200 );//注意,后面这两个参数是高度和宽度,而不是坐标

  glBegin( GL_POLYGON );

  glVertex2f( -0.5, -0.5 );

  glVertex2f( -0.5, 0.5 );

  glVertex2f( 0.5, 0.5 );

  glVertex2f( 0.5, -0.5 );

  glEnd();


  //定义在左上角的区域

  glColor3f( 1.0, 0.0, 0.0 );

  glViewport( 0, 200, 200, 200 );//注意,后面这两个参数是高度和宽度,而不是坐标

  glBegin( GL_POLYGON );

  glVertex2f( -0.5, -0.5 );

  glVertex2f( -0.5, 0.5 );

  glVertex2f( 0.5, 0.5 );

  glVertex2f( 0.5, -0.5 );

  glEnd();


  //定义在右下角

  glColor3f( 1.0, 1.0, 1.0 );

  glViewport( 200, 0, 200, 200 );//注意,后面这两个参数是高度和宽度,而不是坐标

  glBegin( GL_POLYGON );

  glVertex2f( -0.5, -0.5 );

  glVertex2f( -0.5, 0.5 );

  glVertex2f( 0.5, 0.5 );

  glVertex2f( 0.5, -0.5 );

  glEnd();

  glFlush();

}


void init()

{

  glClearColor( 0.0, 0.0, 0.0, 0.0 );

  glColor3f( 1.0, 1.0, 1.0 );


  glMatrixMode( GL_PROJECTION );

  glLoadIdentity();

  //定义剪裁面

  //gluOrtho2D( -1.0, 1.0, -1.0, 1.0 );

}


int main( int argc, char ** argv )

{

  glutInit( &argc, argv );

  glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );

  glutInitWindowPosition( 100, 100 );

  glutInitWindowSize( 400, 400 );

  glutCreateWindow( "glViewport" );

  glutDisplayFunc( display );

  init();

  glutMainLoop();

}



    本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1881876,如需转载请自行联系原作者





相关文章
|
3月前
|
自然语言处理 搜索推荐 测试技术
阿里云大模型的应用例
阿里云大模型在智能信息处理领域取得显著成果,以深言科技的“深言达意”产品为例。该平台基于阿里云PAI高效训练大规模模型,利用云端GPU集群实现资源最优利用,达到近100%的GPU计算使用率。产品通过自研大模型并针对词句检索任务微调,解决特定场景的信息处理需求。结合大语言模型与检索能力,“深言达意”支持自然语言交互,并能精准定位用户查询,避免知识性错误。深言科技还通过数据反馈循环不断优化模型,提升服务个性化与准确性。在阿里云的支持下,该平台展示了高效的信息处理与交互能力,为用户提供创新智能信息服务。
85 1
|
7月前
|
测试技术
Allure2添加用例标题、用例步骤
在Allure2报告中,可以通过`@allure.title`装饰器添加用例标题以增强可读性。标题可参数化或动态更新。同时,Allure2支持两种添加步骤方法:1) 使用`@allure.step`定义测试步骤并在用例中调用;2) 使用`with allure.step()`结构在代码块中添加步骤,提高测试流程的清晰度。这些功能提升了报告的易读性和测试的详细度。
|
测试技术 数据安全/隐私保护
软件测试—用例篇(下)
软件测试—用例篇(下)
|
测试技术 双11
软件测试—用例篇(上)
软件测试—用例篇(上)
157 0
|
数据采集 消息中间件 监控
数据预处-理用例流程介绍|学习笔记
快速学习数据预处-理用例流程介绍
数据预处-理用例流程介绍|学习笔记
|
测试技术
unittest系统(五)用例的跳过
unittest系统(五)用例的跳过
unittest系统(五)用例的跳过
mqc
|
jenkins 测试技术 持续交付
自动化测试 之 “好用例、坏用例”
自动化测试的重要性显而易见,但自动化测试又无法解决所有问题,所以说完全依赖自动化是不可能的,但完全没有自动化是万万不能。在软件开发项目中,重度依赖人力进行持续回归是一件非常枯燥的重复工作。企业需要花费大量的时间和金钱来维持这样一支队伍以保证产品质量,而队伍中的同学在每天重复劳动的工作之下,也丝毫得不到成长,看不到方向。
mqc
4296 0
|
Web App开发 JavaScript 安全
|
测试技术 数据安全/隐私保护