未完待续!!
// 用该程序来介绍基本一个程序的基本框架
#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函数被调用后,在主窗口被关闭之前都不回还回。这个函数负责处理所有操作系统特定的消息、动作按键等,直到我们关闭程序。
用户授权与权限撤销三用户授权: 在数据库服务器上添加新的连接用户名,默认只有数据库管理员root 用户在数据服务器本机登陆有授权权限,默认情况下管理员只能从数据库本机连接服务,在没有其他用户能够连接数据库服务器。 授权的命令格式:grant 权限列表 on 数据库名 to 用户名 @“客户端地址” identified by “密码” [with grant option]..._mysql8 取消用户访问 information_schema , performance_schema 权限
一步步解决从JAVA下载、环境配置到notepad如何运行java
下载源码http://www.mplayerhq.hu/MPlayer/releases/编译libmad也可以不用libmad可以在configure时使用–disable-madtar -xzvf libmad-0.15.1b.tar.gz -C .解压到当前目录下,使用以下命令configure./configure --enable-fpm=arm --host=arm-linux-gcc --disable-shared --disable-debugging --prefix=YOU_tinyalsa mplayer
将tar压缩文件解压到指定的目录下的命令是:tar -xvf 压缩文件 -C /指定目录例:#tar -xvf openstack_test.tar -C /tmp_openstack压缩包解压
注意List 使用前需要做非空处理1.以某个属性分组Map<String,List<User>> map= userList.stream().collect(Collectors.groupingBy(User::getName));2.获取集合中的某个属性转为集合pictureList.stream().map(Picture::getSrc).collect(Collectors.toList());3.根据集合中的某个属性进行升序重排roomList.stre_map 转list lamda
当我通过docker run启动任何容器时,我们得到一个新的veth interface.删除容器后,应删除与容器链接的veth接口.但是,有时它会失败(然后容器启动出错):root@hostname /home # ifconfig | grep veth | wc -l53root@hostname /home # docker run -d -P axibase/atsd -name ax...
开放原子开源基金会于2020 年 9 月接受华为捐赠的智能终端操作系统基础能力相关代码,随后进行开源,并根据命名规则为该开源项目命名为 OpenAtom OpenHarmony(简称“OpenHarmony”)。2020 年 12 月,博泰、华为、京东、润和、亿咖通、中科院软件所、中软国际等七家单位(按各单位简称首字母排序)在开放原子开源基金会的组织下成立了 OpenHarmony 项目群工作委员会,开始对 OpenHarmony 项目进行开源社区治理。各家单位对 OpenHarmony 开源项目._技术社区 openharmony
Linux下创建用户:useradd tooker #创建用户tookerpasswd tooker #给用户tooker设置密码,如果没有设置密码该用户不能用useradd -g users tooker1 #先创建用户组users,然后在users组下创建一个用户tooker1Linux下删除用户:userdel tooker1 #删除用户tooker1userdel -r tooker1 #删除tooker1,同事删除他的工作目录groupdel ..._useradd -g users
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: *作 者:陈军正 *完成日期:2017年9月26日 *版 本 号:v1.0 * *问题描述:定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果。*/ #include #include typedef int El
目录第2章 什么是Activiti72.1Activiti 介绍2.1.1 BPM2.1.2 BPM 软件2.1.3 BPMN2.2Activit 如何使用2.2.1部署Activit2.2.2流程定义2.2.3流程定义部署2.2.4启动一个流程实例(ProcessInstance)2.2.5用户查询待办任务(Task)2.2.6用户办理任务2.2.7流程结束第2章 什么是Activiti72.1Activiti 介绍Alfresco 软件在 _activiti7和6区别
总结:es在存储数据的时候发吧json对象存储到"_source"字段里,如果index 属性设置了 analyzed 会做一个倒排表方便查询。可以理解_source 就是数据库里的一条记录(可以选着不存),index就是存索引信息的(可以选着不索引)。转自:https://www.jeeboot.com/archives/1499.html使用 elasticsearch 时碰上
文章目录开篇问题简介各种锁简介源码分析成员属性构造方法添加元素初始化桶数组判断是否需要扩容协助扩容(迁移元素)迁移元素删除元素获取元素获取元素个数总结开篇问题(1)ConcurrentHashMap与HashMap的数据结构是否一样?(2)HashMap在多线程环境下何时会出现并发安全问题?(3)ConcurrentHashMap是怎么解决并发安全问题的?(4)ConcurrentHashMap使用了哪些锁?(5)ConcurrentHashMap的扩容是怎么进行的?(6)Concurrent