未完待续!!
// 用该程序来介绍基本一个程序的基本框架
#include <GLTools.h> // OpenGL toolkit
#include <GLShaderManager.h> // Shader Manager Class
//在不同系统上的头文件
#ifdef __APPLE__
#include <glut/glut.h> // OS X version of GLUT
#else
#define FREEGLUT_STATIC
#include <GL/glut.h> // Windows FreeGlut equivalent
#endif
GLBatch triangleBatch;
GLShaderManager shaderManager;
//////////////////////////////////////////////////////
// 改变窗口大小
// to use the window dimensions to set the viewport and the projection matrix.
void ChangeSize(int w, int h)
{
glViewport(0, 0, w, h);
}
///////////////////////////////////////////////////////////////////////////////
// This function does any needed initialization on the rendering context.
// This is the first opportunity to do any OpenGL related tasks.
void SetupRC()
{
// Blue background
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
shaderManager.InitializeStockShaders();
// Load up a triangle
GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,
0.5f, 0.0f, 0.0f,
0.0f, 0.5f, 0.0f };
triangleBatch.Begin(GL_TRIANGLES, 3);
triangleBatch.CopyVertexData3f(vVerts);
triangleBatch.End();
}
///////////////////////////////////////////////////////////////////////////////
// Called to draw scene
void RenderScene(void)
{
// Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
triangleBatch.Draw();
// Perform the buffer swap to display back buffer
glutSwapBuffers();
}
///////////////////////////////////////////////////////////////////////////////
// Main entry point for GLUT based programs
int main(int argc, char* argv[])
{
gltSetWorkingDirectory(argv[0]); //设置当前工作目录
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
glutInitWindowSize(800, 600);
glutCreateWindow("Triangle");
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
GLenum err = glewInit();
if (GLEW_OK != err) {
fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));
return 1;
}
SetupRC();
glutMainLoop();
return 0;
}
主函数:
1.
gltSetWorkingDirectory(argv[0]);
设置当前工作目录,在windows下是不必要的,
2.
glutInit(&argc, argv);
传输命令行参数并初始化glut库。
3.
gluInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_STENCIL);
告诉glut库,在窗户窗口时使用的显示模式。
4.
glutInitWindowSize(800, 600);
glutCreateWindow("Triangle");
告诉glut窗口的大小,并创建以“Triangle”为标题的窗口。
5.
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
glut内部运行一个本地消息循环,拦截适当的消息,然后调用我们为不同时间注册的回调函数。
6.
GLenum err = glewInit();
if(GLew_OK != err){
fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));
return 1;
}
在主消息循环之前,初始化glew库,并且检查确定驱动程序的初始化过程中没有出现问题。
7.
SetupRC();
在这里进行OpenGL初始化比较方便,在任何OpenGL函数起作用之前必须创建一个渲染环境,而glut在第一次创建窗口时就创建了一个渲染环境了。
8.
glutMainLoop();
return 0;
主消息循环,glutMainLoop函数被调用后,在主窗口被关闭之前都不回还回。这个函数负责处理所有操作系统特定的消息、动作按键等,直到我们关闭程序。
-------命令指令解释查看指令display ip int briefdisplay ip routing-table配置路由器–开局sys进入系统操作模式undo in ensys T-R1为路由器设置名字为T-R1..._undo in en
1、定义 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。(摘自Head First中文版51页)2、说明 在通常情况下,软件系统会包含各种对象,就像大海孕育着形色各异的动植物一样。在浩瀚的海洋中,各种动植物彼此依赖和约束,形成一个个生物链。某一种生物的行为状态变化可能会造成其它生物作出相应行动。同样,在
恭喜NutUI :成功申报中国科协开源评选中国科协首届2021“科创中国”开源创新榜评选正在进行中,全程免费参与,对于申报成功的开源产品/社区/机构,主承办方会组织各种形式的宣传报道。NutUI :提供高效便捷开发方式的开源移动端组件库NutUI :成功申报中国科协开源评选开源项目介绍京东开源项目 NutUI 是一套京东风格的轻量级移动端组件库。基于JD APP 10.0设计规范。支持Vue2、Vue3\多端小程序,是开发和服务于移动端的企业级产品。产品特点京东风格(京东APP0规.
magnetX 中文版是一款非常好用的资源搜索神器,界面干净简洁并且不会有弹窗。而且可以通过关键字搜索,或者网址过滤这两种方式快速找到你想要的资源,并且还能配合WebTorrent在线播放,还可以配合下载工具进行一键下载资源,可以查看文件的大小来达到不会误下载葫芦娃的效果!magnetX是什么?问:搜索网站老是弹少儿不宜的广告,同事看到多不好啊怎么办?答:magnetX。问:我有一个神奇车牌,但是到处都找不到下载地址怎么办?答:magnetX。问:别人分享的作品,原始链接下不了怎么办_ipx资源怎么找
为什么别人打开手机就能做数据分析,点两点就能切换不同分析角度?还能为什么,明显是用了BI数据可视化工具。BI数据可视化工具做的分析报表不仅能在电脑端快速做分析,更适用于大屏、移动端(如手机),能通过触屏点击的方式来随时切换字段与维度组合。就以奥威BI系列的OurwayBI数据可视化工具为例,支持任意终端、屏幕自适应,用户在平台上做好的数据可视化报表可随时随地在任意终端上秒开。分析报表一键送达总结来..._电脑代码表白怎么在手机上显示
上一章我们了解了如何自定义只读模型。顾名思义,只读模型只能够用于展示只读数据,用户不能对其进行修改。如果允许用户修改数据,则应该提供可编辑的模型。可编辑模型与只读模型非常相似,至少在展示数据方面几乎是完全一样的,所不同的是可编辑模型需要提供用户编辑数据后,应当如何将数据保存到实际存储值中。我们还是利用上一章的CurrencyModel,在此基础上进行修改。相同的代码这里不再赘述,我
引言随着Internet技术的发展,人们的日常生活已经离不开网络,未来社会人们的生活和工作将越来越依赖于数字技术的发展,越来越数字化、网络化、电子化、虚拟化。电子商务也随着网络的发展日益和人们的生活贴近,Internet的发展历程以及目前的应用状况和发展趋势,可以充分地相信网络技术将极大地改变我们的生活和工作方式,甚至社会的价值观也会发生某种变化。网上购物是以信息技术为基础的电子商务活动...
1、进位标志CF(Carry Flag)如果运算结果的最高位产生了一个进位或错位,那么,其值为1,否则其值为02、奇偶标志(Parity Flag)由于反应运算结果中(转化为二进制),"1"的奇偶性,也就是个数。"1"的个数为偶数,PF为1。个数为奇数,PF为0.3、辅助进位标志AF(Auxiliary Carry Flag)在发生下列情况时,AF的值为1,否则其值为0(1)、在字操作时,发生低字节向高字节进位或错位时;(2)、在字节操作时,发生低4位向高4位进位或错位时;4、零标志ZF(._标志寄存器中6个状态标志位
初次链接JDBC遇到:Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure。数据库链接失败的原因有以下:URL错误;用户名错误;密码错误。String url = "jdbc:mysql://localhost:3306/jdbcStudy?useUnicode=true&characterEncoding=utf8&_communications link failure的原因
1.自我介绍 我叫***,就读于***大学,现在在读大三,学的专业是通信工程,但是大一c语言课设结束后,开始对编程感兴趣,随后加入了院实验室,跟大家一起学习,毕竟有一个好的学习氛围,学的才能更快,更多一点。之后又自学了java,数据结构和一些基础的算法。2.做过哪些项目?一个是jsp+servlet,另外一个是课堂派。3.具体说一下企业人事管理系统那个项目你负责的模块?我主要负责登陆和注册,登陆..._hpe 面试
获取【下载地址】 QQ: 313596790 【免费支持更新】A 代码生成器(开发利器);全部是源码 增删改查的处理类,service层,mybatis的xml,SQL( mysql 和oracle)脚本, jsp页面 都生成 就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid; 数据库连接池 阿里巴巴的 dr
App实战:夜间模式实现方法一大致上有三种实现方法:通过更换主题,不需要重新创建Activity。/** * Set the base theme for this context. Note that this should be called * before any views are instantiated in the Context (for examp..._android recyclerview黑夜切换