当前位置:网站首页>openGl超级宝典学习笔记 (1)第一个三角形「建议收藏」
openGl超级宝典学习笔记 (1)第一个三角形「建议收藏」
2022-07-07 18:43:00 【全栈程序员站长】
大家好,又见面了,我是全栈君。
执行效果
代码及解析:
//
// Triangle.cpp
// Triangle
//
// Created by fengsser on 15/6/20.
// Copyright (c) 2015年 fengsser. All rights reserved.
//
#include <GLTools.h>//用作掩盖不同平台的差异,建立窗体等工作
#include <GLShaderManager.h>
#ifdef __APPLE__
#include <glut/glut.h>
#else
#define FREEGLUT_STATIC
#endif
GLBatch triangleBatch;
GLShaderManager shaderManager;
//窗体大小改变时接受新的宽度和高度,參数单位为象数
void ChangeSize(int w,int h)
{
//完毕从目的坐标系到屏幕坐标系的映射,Glint x,Glint y为viewPort在窗体中左下角的坐标。veiwPort是渲染区域。
glViewport(0, 0, w, h);
}
//set render-context
void SetupRC()
{
//设置背影颜色 r,g,b,a
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
//初始化着色管理器
shaderManager.InitializeStockShaders();
//设置三角形。当中数组vVert包括全部3个顶点的x,y,z,笛卡尔坐标(就是初中高中学的坐标系)。 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();}//開始渲染void RenderScene(void){ //清除缓冲区:颜色|深度|模板 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); //设置一组浮点数来表示红色 GLfloat vRed[] = {1.0f,0.0f,0.0f,1.0f}; //传送颜色到存储着色器,即GLT_SHADER_IDENTITY着色器,这个着色器仅仅是使用指定颜色以默认笛卡尔坐标第在屏幕上渲染几何图形 shaderManager.UseStockShader(GLT_SHADER_IDENTITY,vRed); //提交几何图形着色器 triangleBatch.Draw(); //将在后台缓冲区进行渲染。然后在结束时交换到前台 glutSwapBuffers();}int main(int argc,char* argv[]){ gltSetWorkingDirectory(argv[0]);//设置当前工作文件夹。针对MAC OS X glutInit(&argc, argv); //传输命令行參数并初始化GLUT库 //告诉GLUT库在创建窗体时使用哪种显示模式,GLUT_DOUBLE:双缓冲窗体。GLUT_RGBA:RGBA颜色模式;GLUT_DEPTH:深度測试GLUT_STENCIL:模板測试 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL); glutInitWindowSize(800, 600);//GLUT窗体大小,标题窗体 glutCreateWindow("Triangle");//创建以Triangle为标题的窗体 //注冊侦听,在出循环中会发出事件,窗体大小改变和openGl渲染 glutReshapeFunc(ChangeSize); glutDisplayFunc(RenderScene); //初始化openGL驱动程序中丢失的入口点glewInit,并检查初始化是否出现故障。 GLenum err = glewInit(); if (GLEW_OK != err) { fprintf(stderr, "glew error:%s\n",glewGetErrorString(err)); return 1; } SetupRC();//RC-Render context glutMainLoop();//開始主循环 return 0;}
关键流程
关于视口(viewPort)及窗体:
视口。渲染(绘制)区域。
一般与窗体等大。视口用于从逻辑笛卡尔坐标系统映射到物理屏幕的像素坐标。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116433.html原文链接:https://javaforall.cn
边栏推荐
- 开发一个小程序商城需要多少钱?
- Small guide for rapid formation of manipulator (12): inverse kinematics analysis
- Data sorting in string
- Mrs offline data analysis: process OBS data through Flink job
- Dachang classic pointer written test questions
- 使用 BR 恢复 Azure Blob Storage 上的备份数据
- Prometheus remote_write InfluxDB,unable to parse authentication credentials,authorization failed
- How to choose financial products? Novice doesn't know anything
- Read PG in data warehouse in one article_ stat
- 字符串中数据排序
猜你喜欢
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
Measure the height of the building
使用camunda做工作流设计,驳回操作
【OpenCV 例程200篇】223. 特征提取之多边形拟合(cv.approxPolyDP)
Implement secondary index with Gaussian redis
Klocwork 代码静态分析工具
Micro service remote debug, nocalhost + rainbow micro service development second bullet
Nebula importer data import practice
Is embedded system really safe? [how does onespin comprehensively solve the IC integrity problem for the development team]
微服务远程Debug,Nocalhost + Rainbond微服务开发第二弹
随机推荐
嵌入式系统真正安全了吗?[ OneSpin如何为开发团队全面解决IC完整性问题 ]
华为CE交换机下载文件FTP步骤
想杀死某个端口进程,但在服务列表中却找不到,可以之间通过命令行找到这个进程并杀死该进程,减少重启电脑和找到问题根源。
Prometheus remote_write InfluxDB,unable to parse authentication credentials,authorization failed
软件缺陷静态分析 CodeSonar 5.2 新版发布
Lingyun going to sea | saihe & Huawei cloud: jointly help the sustainable development of cross-border e-commerce industry
Small guide for rapid formation of manipulator (11): standard nomenclature of coordinate system
Optimization cases of complex factor calculation: deep imbalance, buying and selling pressure index, volatility calculation
The latest version of codesonar has improved functional security and supports Misra, c++ parsing and visualization
How does codesonar help UAVs find software defects?
【奖励公示】第22期 2022年6月奖励名单公示:社区明星评选 | 新人奖 | 博客同步 | 推荐奖
万字总结数据存储,三大知识点
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
使用高斯Redis实现二级索引
恶魔奶爸 指南帖——简易版
Network principle (1) - overview of basic principles
Codesonar enhances software reliability through innovative static analysis
Helix QAC 2020.2 new static test tool maximizes the coverage of standard compliance
Deep learning model compression and acceleration technology (VII): mixed mode
AADL Inspector 故障树安全分析模块