openGl超级宝典学习笔记 (1)第一个三角形「建议收藏」

openGl超级宝典学习笔记 (1)第一个三角形

大家好,又见面了,我是全栈君。

openGl超级宝典学习笔记 (1)第一个三角形「建议收藏」
执行效果

代码及解析:
//
//  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;}

openGl超级宝典学习笔记 (1)第一个三角形「建议收藏」
关键流程


关于视口(viewPort)及窗体:
openGl超级宝典学习笔记 (1)第一个三角形「建议收藏」

视口。渲染(绘制)区域。

一般与窗体等大。视口用于从逻辑笛卡尔坐标系统映射到物理屏幕的像素坐标。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116433.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【云原生】第十二篇–docker容器镜像仓库Harbor部署[通俗易懂]

    【云原生】第十二篇–docker容器镜像仓库Harbor部署[通俗易懂]由于国内访问国外的容器镜像仓库速度比较慢,因此国内企业创建了容器镜像加速器,以方便国内用户使用容器镜像。Harbor是VMware公司开源的企业级DockerRegistry项目,其目标是帮助用户迅速搭建一个企业级的Dockerregistry服务。它以Docker公司开源的registry为基础,提供了管理UI,基于角色的访问控制(RoleBasedAccessControl),AD/LDAP集成、以及审计日志(Auditlogging)等企业用户需求的功能,同时还原生支持中文。…

    2025年7月29日
    4
  • 高斯,拉普拉斯分布

    高斯,拉普拉斯分布一般来说我们可以使用正则化来避免过度拟合 但是实际上什么是正则化 什么是通用技术 以及它们有何不同 正规化是我们对学习算法所做的任何修改 旨在减少其泛化误差 而不是其训练误差 换句话说 通过防止算法过度拟合训练数据集 可以将正则化用于训练对看不见的数据更好地泛化的模型 那么 如何修改逻辑回归算法以减少泛化误差呢 我发现的常见方法是高斯 拉普拉斯 L1 和 L2 高斯还是 L2 拉普拉斯还是 L1 这有什么不同吗 可以证明 L2 和高斯或 L1 和拉普拉斯正则化对算法具有同等影响 获得正则化效果的方法有两种

    2025年6月21日
    2
  • html二级菜单的创建[通俗易懂]

    html二级菜单的创建[通俗易懂]二级菜单用的是无序列表嵌套,:hover鼠标悬浮其上方发生的事<!DOCTYPEhtml><html> <head> <metacharset=”utf-8″/> <title></title> <styletype=”text/css”> *{margin:0; …

    2022年6月9日
    27
  • IE6下margin双倍边距Bug的处理办法 转

    IE6下margin双倍边距Bug的处理办法 转

    2021年8月9日
    70
  • 手动清除fun.xls.exe病毒的方法[通俗易懂]

    手动清除fun.xls.exe病毒的方法[通俗易懂](无法显示隐藏文件以及无法双击打开分区)用杀毒软件杀毒,所有驱动盘上的文件夹表现为不可见,实际为文件夹隐藏了。如何判断是中了该种病毒,可以通过在命令行下键入:cdC:’dir/ah如果有fun.x

    2022年7月3日
    27
  • 【转】gcc命令中参数c和o混合使用的详解

    【转】gcc命令中参数c和o混合使用的详解

    2022年3月6日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号