OpenGL学习笔记(2) 画一个正方形】的更多相关文章

画一个正方形 其实,画正方形就是画两个三角形,用四个顶点以及使用索引来实现 完整代码在Square项目的Application.cpp里 先贴上窗口初始化代码 void BaseInit() { glfwInit();//初始化 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//配置GLFW glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//配置GLFW glfwWindowHint(GLFW_OPENG…
最近找实习有一丢丢蛋疼,沉迷鬼泣5,四周目通关,又不想写代码,写篇笔记复习一下,要好好学图形学啊 用OpenGL画一个三角形 项目的简介 记录一下跟着learnOpenGL学习的过程 笔记里的代码放在github上,依赖都用相对路径配好了,直接下载就能用,IDE是VS2017,代码 选择Triangle项目作为启动项可以测试这个代码 使用的库是glad和glfw,感觉用glad和glfw开发OpenGL的方式和DX挺像的,也有可能是我见识少, 感觉很多教材用来教学的库都是GLUT, 嘛,学图形学…
OpenGL环境搭建参考博客:VS2015下OpenGL库的配置. #include<GL\glew.h> #include<GLTools.h> #include<GLShaderManager.h> #ifdef __APPLE__ #include<GL\glut.h> #else #define FREEGLUT_STATIC #include<GL\glut.h> #endif GLShaderManager shaderManager…
转自:OpenGL学习笔记:拾取与选择 在开发OpenGL程序时,一个重要的问题就是互动,假设一个场景里面有很多元素,当用鼠标点击不同元素时,期待作出不同的反应,那么在OpenGL里面,是怎么知道我当前鼠标的位置是哪一个物体呢? OpenGL有一套机制,叫做Picking, 里面涉及到几个核心概念: 1. selection mode. 选择模式 2. name stack. 名字栈 3. hit record. 命中记录 4. viewing volume. 视角范围 在OpenGL的pick…
在GL中特别提出了缓冲区对象这一概念,是针对提高绘图效率的一个手段.由于GL的架构是基于客户——服务器模型建立的,因此默认所有的绘图数据均是存储在本地客户端,通过GL内核渲染处理以后再将数据发往GPU显示.假设这样一种情况,有一批数据并不经常更改而数目又挺大,如果按照通常的做法无非是不断重复不断重复发送数据,整个操作主要内容变成了传输数据.针对这种窘况,GL内核允许客户将客户端的数据直接在GPU显存区域开辟一段缓冲区存储,存储具备这种特点的数据. 此时,考虑另一种极端情况,绘图数据需要实时渲染更…
C#.NET学习笔记2---C#.第一个C#程序 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com 6.第一个C#程序:   a.单行注释://   b.多行注释:/* ...  */ ,注意*和/之间没有空格  唯一需要学的三条控制台指令:   想控制台打印:hello...   using System; using System.Collections.Generic; using System.Linq; usi…
Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-core_2.10 的依赖 程序 找了一篇注释比较清楚的博客代码1,一次运行通过 import scala.Tuple2; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.ap…
目录 1. 概述 2. 详论 2.1. 网格(Mesh) 2.1.1. 顶点 2.1.2. 顶点索引 2.2. 材质(Material) 2.2.1. 创建材质 2.2.2. 使用材质 2.3. 光照 3. 代码 1. 概述 上一篇文章<Unity3D学习笔记1--绘制一个三角形>中介绍了Unity3D的HelloWorld--绘制一个简单的三角形.不过这个三角形太简单了,连材质都没有.那么这里就将三角形扩展为一个矩形的面,并且为这个面贴上纹理. 2. 详论 2.1. 网格(Mesh) 前面说…
准备: 1.准备资源:从GLEW1.13.0下载GLEW,并且解压出glew-1.13.0目录.从FreeGLUT官网下载3.0.0版本.直接从这里下的编译后的FreeGLUT,选for MSVC,下载后解压. 2.将所有的x64(64位)版本的.h和.lib拷贝到vs2015安装目录下的vc文件夹里的include和lib里 将所有.dll文件拷贝到C:\Windows\SysWOW64这个目录下 如果是32位系统就不一样了 3.打开ivs2015,创建新的控制台应用程序 #include <…
目录 一.衔接 二.概述 三.各个坐标系统 局部空间 世界空间 观察空间 裁剪空间 四.两种投影矩阵 正射投影 透视投影 五.把它们都组合到一起 六.编码实现 1. 实现卡片旋转 2. 实现正方体旋转 Z缓冲 3. 绘制更多的立方体 参考资料:OpenGL中文翻译 一.衔接 在上一个教程中,我们学习了如何有效地利用矩阵的变换来对所有顶点进行变换.OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC).也就…
参考网址:http://www.cnblogs.com/FredCong/archive/2012/10/13/2722893.html #include <glut.h> #include <math.h> #include <stdio.h> #include <stdlib.h> void myDisplay1(void) { glClear(GL_COLOR_BUFFER_BIT); glRectf(-0.5f, -0.5f, 0.5f, 0.5f)…
OpenGL学习日志: 感谢doing5552 的OpenGL入门学习:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 相信有部分人还在使用pascal学习OpenGL(像我一样)说不定也有人经常会遇到莫名其妙的编译错误(即使只是一个模板) 经过十个多小时的研究,我终于找到了OpenGL的使用方法 首先,在百度上(也可以是别的搜索引擎)上找到叫做glutdlls37beta的压缩包,下载解压后全部放入bin->i386…
还记得<MiZ702学习笔记(番外篇)--纯PL VGA驱动>这篇文章中,用verilog写了一个VGA驱动.我们今天要介绍的就是将这个工程打包成一个普通的IP,目的是为后面的一篇文章做个铺垫. 打包成一个普通的IP的目的,可以直接将这个IP粘贴到Block文件中.(和用文本实例化是一个意思).应为我们调用zynq的核的时候一般是用Block的形式,为了zynq和我们的VGA模块更方便的组织起来,就需要这种IP打包方式. 为什么是强调是普通的IP,这个主意是区分带AXI接口的IP,这个在后面介…
opengl纹理贴图的步骤: 1:创建纹理对象,并为它指定一个纹理 2:确定纹理如何应用到每个像素上 3:启用纹理贴图功能 4:绘制场景,提供纹理坐标和几何图形坐标 注意:纹理坐标必须在RGBA模式下才能使用. 使用一个简单的程序演示纹理贴图,纹理(由交替的黑白方块组成)是有程序产生的. /*Create checkerboard texture */ #include <GL/glut.h> #include <GL/gl.h> #include <GL/glu.h>…
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------…
今天我们来学习一个最简单的程序,即从文件读取图像并且创建窗口显示该图像. 目录 [imread]图像读取 [namedWindow]创建window窗口 [imshow]图像显示 [imwrite]图像写入文件 [waitKey]等待按键按下 前言 在说正文之前先简单介绍一下Mat类.Mat类是opencv2.0的主流图像类型,在之前opencv1.0使用的Iplimage*类型,Iplimage*是C语言接口类型,使用Iplimage*时需要考虑到关闭窗口时图形内存的释放问题.而使用Mat则在…
近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当前时间.温度也是甚好的.作为一个桌面小时钟还是非常精致的. 1. 眼下有哪些工具 眼下比較好用的应该是 weather-util, 之前我获取天气信息一般都是通过它. 使用起来也非常easy: (1) Debian/Ubuntu 用户使用 sudo apt-get install weather-u…
写学习笔记是我学习python以来养成的一个习惯,每学习一个知识点,便整理成文字记录下来.搜索引擎大家经常都有在使用,国内外也很很多搜索引擎平台. Google搜索引擎建立至今已经快20年了,之后全球各类大大小小类似的搜索引擎也陆续出现.消亡.国内目前以百度为大,搜狗.360.必应等也势在必争.搜索引擎技术也发展的相当成熟,同时也就出现了很多开源的搜索引擎系统.比如,Solr.Lucene.Elasticsearch.Sphinx等. 本文以sphinx search为例来介绍如何打造自己的搜索…
不看笔记,长时间不用自己都忘了,还是得经常看看笔记啊. 一个简单的shell程序 shell结构 1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建shell程序的步骤 第一步:创建一个包含命令和控制结构的文件 第二步:修改这个文件的权限使它可以执行. 使用chmod u+x 第三步:执行shell sh /test/example.sh   Shell变量 变量:是shell传递数据的一种方法,用来代表每个取值的符号名 shell有两类变量:临时变量和永久变量 临时变量是…
目录 渲染管线(Graphics Pipeline) 编码实现 顶点数据 顶点缓冲对象(VBO) 顶点着色器 编译着色器 片段着色器 着色器程序 链接顶点属性 顶点数组对象 最终绘制三角形 索引缓冲对象 参考资料:LearnOpenGL中文翻译 渲染管线(Graphics Pipeline) 在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为适应你屏幕的2D像素.3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管…
创建太阳系模型 描述的程序绘制一个简单的太阳系,其中有一颗行星和一颗太阳,用同一个函数绘制.需要使用glRotate*()函数让这颗行星绕太阳旋转,并且绕自身的轴旋转.还需要使用glTranslate*()函数让这颗行星离开原点,移动到它自己的轨道上.可以在glutWireSphere()函数中使用适当的参数,在绘制球体时指定球体的大小. planet.c #include <GL/glut.h> ,day =; void init(void) { glClearColor(0.0,0.0,0…
以下教程仅适用于Mac下的Xcode编程环境!其他的我也不会搞. 推荐教程:opengl-tutorial  本项目Github网址       OpenGL太可怕了...必需得把学的记下来,不然绝壁忘.   首先贴出代码,然后分析创建一个OpenGL程序都需要什么 #include <cstdio> #include <cstdlib> #include <GL/glew.h> #include <GLFW/glfw3.h> #include <gl…
学习OpenGL也有段时间了,前几篇将GL最基本的画图过程解析了一下,后面进阶的就随项目需要再学.因为之前一直是用glut这个实用工具包来开发很方便,但是会附带一个控制台的窗口,实在觉得有些low,因此就打算将GL嵌入到应用程序中去. 下面就把前几章学习的知识结合起来,在QT下实现GL的动画.之所以选QT而非MFC原因有2点,一则是QT是开源的,现在开源的东西都很热闹,所以我也凑凑热闹,之前用MFC做过别的上位机程序,我是个喜欢图新鲜的人:二则QT的移植性好,一次编译到处运行吧. 总结几处注意点…
学习的参考书基本是按照GL编程指南,如果有消息机制概念,对于GLUT的理解是很自然的.下面就按照自己写的第一个程序详细解释一下GL,还是比较容易上手的. 程序实现的功能是,根据当前随即种子摇出来的结果来动态改变绿色十字架的线宽.坐标.颜色……不断绘制显示在屏幕. 注意,对于图形建模比如画线.画多边形等这些细节可以查阅书籍,不再重复点出来,网上千篇一律的东西还是很多的.下面的注解是个人的理解,包括参考.查阅其他资料. 需要提点的就是我目前用的是图书馆借出来的第四版GL编程指南,有些东西比较落后了,…
最近需要做一个基于Zigbee室内无线定位的系统,受到TI公司ZigBee Sensor Monitor软件的启发,打算用OpenGL来做一个3D显示空间内物体位置的程序.学习阶段选择VS2010+OpenGL,而主机确定是用raspberry pi,到时候需要移植到ES版本. 选择OpenGL看中的就是移植性强,至于其效果和D3D孰强孰弱也很难比较.一则恐怕目前没有使用D3D的机会:二则3D计算机图像渲染效果除了软件还需要硬件支持. 废话不多说,从官网下了OpenGL的一个库GLUT,一共就5…
OpenGL(全写Open GraphicsLibrary)是个定义了一个跨编程语言.跨平台的编程接口规格的专业的图形程序接口.它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库. 说白了,就是OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植:OpenGL可以与Visual C++紧密接口,我们可以在VC++下进行编程(vs) 类似于OpenGL的图形软件包有很多比如微软的图形API,   OSG等等.其中…
转自: http://www.cnblogs.com/TerryBlog/archive/2010/07/09/1774475.html 1.什么是 OpenGL? OpenGL 是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库.OpenGL  的前身是 SGI 公司为其图形工作站开的 IRIS GL.IRIS GL 是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是 SGI 公司便在 IRIS GL 的基础上开发 OpenGL  .具体详细的介绍请 点击这里 .…
通常的增强现实应用需要支持OpenGL的OpenCV来对真实场景进行渲染.从2.4.2版本开始,OpenCV在可视化窗口中支持OpenGL.这意味着在OpenCV中可轻松渲染任何3D内容. 若要在OpenCV中开始一个OpenGL窗口,需要做的第一件事是生成支持OpenGL的OpenCV. 在cmake的时候,应该设置标志: cmake -D ENABLE_OPENGL=YES 如果现在有一个支持OpenGL的OpenCV库,可用其创建第一个OpenGL窗口.OpenGL窗口的初始化由创建一个命…
ubuntu下opengl的安装及配置 OpenGL 是一套由SGI公司发展出来的绘图函数库,它是一组 C 语言的函数,用于 2D 与 3D 图形应用程序的开发上.OpenGL 让程序开发人员不需要考虑到各种显示卡底层运作是否相同的问题,硬件由 OpenGL 核心去沟通,因此只要显示卡支援 OpenGL,那么程序就不需要重新再移植,而程序开发人员也不需要重新学习一组函数库来移植程序. 安装 首先不可或缺的就是编译器与基本的函数库,如果系统没有安装的话,依照下面的方式安装: sudo apt-ge…
<<OpenGL Programming Guide>>这本书是看了忘,忘了又看,赶脚还是把笔记做一做心里比較踏实,哈哈. 我的主题是,好记性不如烂笔头. ================================================================ 1. 下载glut库 glut库地址为:www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut全称为:OpenGL Utilit…