
3D
草上爬
专注技术,热爱分享
展开
-
OpenGL着色器介绍
本文主要介绍如何使用OpenGL实现着色器程序,首先会简单介绍着色器在OpenGL渲染管线中是什么个位置,接着是介绍可以通过GLSL语言实现的两类着色器:顶点着色器和片段着色器,最后使用OpenGL实现了个DEMO(在文章最后面,提供了下载),演示如何使用OpenGL接口创建着色器程序。会例代码下载地址:https://github.com/twinklingstar20/twinklings转载 2016-12-04 17:56:11 · 5460 阅读 · 0 评论 -
OpenGL之glShadeModel函数的用法
函数原型: void glShadeModel (GLenum mode);参数说明: GL_SMOOTH: 采用光滑着色,独立的处理图元中各个顶点的颜色。对于线段图元,线段上各点的颜色将根据两个顶点的颜色通过插值得到。对于多边形图元,多边形内部区域的颜色将根据所有顶点的颜色插值得到。即有过渡色效果 GL_FLAT:采用恒定着色,使用图元中某个顶点的颜色来渲染整个图元...转载 2018-05-11 18:41:17 · 3601 阅读 · 0 评论 -
OpenGL之glPolygonMode函数的用法
1.绘制模式在绘制多边形时除了默认的填充方式,还可以使用点和线使用glPolygonMode函数来设置模式三种不同模式下的绘图 GL_FILL GL_LINEGL_POINT2.多边形的两面如果以顺时针绘制则是反面,逆时针绘制则是正面 // 设置正面为填充模式glPolygonMode(GL_FRONT, GL_FILL); // 设置反面为线形模式glPolygonMode(GL_BACK...转载 2018-05-17 14:41:07 · 19334 阅读 · 1 评论 -
OpenGL坐标系与几何变换
坐标系统想要弄懂几何变换,一定要搞清楚OpenGL中的坐标系统。从我们构造模型的局部坐标系(Local/Object Space)经过一系列处理最终渲染到屏幕坐标(Screen Space)下,这过程中有6种坐标系。World Coordinates(世界坐标系)Object Coordinates(对象坐标系、模型坐标系、局部坐标系或当前绘图坐标系)Eye Coordinates(眼坐标系或照相...转载 2018-05-10 20:42:23 · 9239 阅读 · 0 评论 -
OpenGL之glMatrixMode函数的用法
函数原型: void glMatrixMode(GLenum mode)参数说明: mode 指定哪一个矩阵堆栈是下一个矩阵操作的目标,可选值: GL_MODELVIEW,对模型视图矩阵堆栈应用随后的矩阵操作。可以在执行此命令后,输出自己的物体图形了。 GL_PROJECTION,对投影矩阵堆栈应用随后的矩阵操作。可以在执行此命令后,为我们转载 2018-05-10 15:39:41 · 15776 阅读 · 0 评论 -
OpenGL之glLoadIdentity函数的用法
函数原型: void glLoadIdentity(void)函数说明: OpenGL为我们提供了一个非常简单的恢复初始坐标系的手段,那就是调用glLoadIdentity()命令。该命令是一个无参的无值函数,其功能是用一个4×4的单位矩阵来替换当前矩阵,实际上就是对当前矩阵进行初始化。也就是说,无论以前进行了多少次矩阵变换,在该命令执行后,当前矩阵均恢复成一个单位矩阵,即相当于...转载 2018-05-10 10:37:31 · 6887 阅读 · 0 评论 -
OpenGL之glViewPort函数的用法
其函数原型为:glViewport(GLint x,GLint y,GLsizei width,GLsizei height)x,y 以像素为单位,指定了视口的左下角位置。width,height 表示这个视口矩形的宽度和高度,根据窗口的实时变化重绘窗口。在默认情况下,视口被设置为占据打开窗口的整个像素矩形,窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用glViewport函...转载 2018-05-10 10:06:11 · 45813 阅读 · 4 评论 -
OpenGL ES渲染管线与着色器
前言在前文《[OpenGL ES 01]OpenGL ES之初体验》中我们学习了如何在 iOS 平台上设置OpenGL ES 环境,主要是设置 CAEAGLLayer 属性,创建 EAGLContext,创建和使用 renderbuffer 和 framebuffer,并知道如何清屏。但实际上并没有真正描绘点什么。在本文中,我们将学习OpenGL ES 渲染管线,顶点着色器和片元着色器转载 2017-11-15 17:05:25 · 1154 阅读 · 0 评论 -
Blender及其游戏引擎
简单点说,Blender是一款3D制作软件,同3DMax,Maya类似,可被用于3D动画和3D游戏的制作,与3DMax,Maya高昂的授权价格不同,Blender开源免费,GPL授权协议,不过这点优势在中国似乎不被关注,盗版猖獗,很多人对自己日常使用软件的授权价格一无所知,甚至有些人对自己使用的软件是否收费都不清楚,不得不说是一种悲哀,国人宁愿花奢侈的价格去买硬件,但却舍不得在软件上花一块钱。转载 2017-11-15 15:25:18 · 6613 阅读 · 0 评论 -
在OpenGL中向shader传递信息
引言一个OpenGL程序可以用多种方式和shader通信。注意这种通信是单向的,因为shader的输出只能是渲染到某些目标,比如颜色和深度缓存。OpenGL的部分状态可以被shader访问,因此程序改变OpenGL某些状态就可以与shader进行通信了。例如一个程序想把光的颜色传给shader,可以直接调用OpenGL接口,就像使用固定功能流水线时做的那样。不过,使用Ope转载 2017-11-15 15:17:53 · 977 阅读 · 0 评论 -
OpenGL中Camera类的设计以及使用
简介: 首先,camera类是什么?它相当于摄像机镜头,通过设定合适的位置和角度可以实现对3D绘制图形的观察,而camera类的优势就在于可以围绕绘制的物体进行漫游,唯一需要完成的工作就是如何使用该类的操作完成有效的漫游。 很多带3D图形显示的软件其实都有自己的camera类,很多时候我们可以使用鼠标即可完成3D图形的各个方向360度的观察,并且最好还可以拉转载 2017-11-15 15:09:49 · 2644 阅读 · 0 评论 -
OpenGL简单实现太阳系模拟
#include "stdafx.h"#include #include #include "math.h"#include // GLaux库的头文件#pragma comment( lib, "glaux.lib") // GLaux连接库//行星序是水星、金星、地球、火星、木星、土星、天王星、和海王星//adam,hesper,earth,mars,jupiter,sat转载 2017-11-15 14:25:05 · 8286 阅读 · 2 评论 -
将Qt、OpenGL、GLSL以及Qt的Graphics-View框架结合
九月份都快过去了,学生们也都开学了,我想校园也会热闹许多吧,在优快云上也相应地热闹了一些。中秋节也过去了,自己身边还有很多没有吃完的月饼,于是将月饼作为早餐每天早上吃一个,希望这样不会浪费。 这个月的事情比较多,又比较忙,所以这么晚才能抽出时间写出一篇。这回介绍一下Qt对OpenGL的支持情况,话说半月前,我参加了上海地区的Qt研讨会,Digia那边的工程师介绍了一下Qt的发转载 2017-11-14 14:37:43 · 1381 阅读 · 0 评论 -
Qt之实现3D纹理渲染自由旋转空间立方体
昨天七夕,关于七夕美好的爱情传说源自于浩瀚银河星空,又碰巧最近在学习QtOpenGL实现三维纹理防体重建,突发奇想用Qt实现一个立方体星空模型,并且能随着鼠标操作实现空间自由旋转 核心思想是用到Qt OpenGL模块,将二维图片贴到立方体的六个面,鼠标可以自由旋转立方体,实现三维星空的动态变换,真正做出来后,感觉效果还挺好的,三维立体星空看起来还是很绚丽的,呵呵转载 2017-11-14 14:24:03 · 5974 阅读 · 0 评论 -
开源玩家福利:十大Linux免费游戏
假如当你考虑从Windows平台迁移至Linux平台时,“我能在Linux平台上游戏吗?”这类疑问正困扰着你,那么对此这有一个答案就是“快去Linux平台吧!”。感谢开源组织一直以来坚持不懈为Linux操作系统开发不同类型的游戏,还有从不缺乏好的商业游戏,并且在Linux平台下游戏时的乐趣完全不亚于其他几个平台(比如Windows平台)的在线数字发行平台————Steam。接下来我们基于流行程转载 2017-06-22 20:11:22 · 4924 阅读 · 0 评论 -
十大开源游戏引擎深入比较
在国内外,业界盛传有十大开源游戏引擎,分别是OGRE、Irrlicht、Panda3D、Crystal Space、jME、Blender Game Engine、Reality Factory、The Nebula Device 2、RealmForge、OpenScene- Graph。我们对这十款开源游戏引擎深入进行分析。(1) OGRE是面向对象图形渲染引擎(Object-Orient转载 2017-06-22 20:05:42 · 55961 阅读 · 2 评论 -
OpenGL学习脚印: 二维纹理映射(2D textures)
写在前面 前面两节介绍了向量和矩阵,以及坐标和转换相关的数学,再继续讨论模型变换等其他包含数学内容的部分之前,本节介绍二维纹理映射,为后面学习做一个准备。纹理映射本身也是比较大的主题,本节只限于讨论二维纹理的基本使用,对于纹理映射的其他方法,后面会继续学习。可以从我的github下载本节代码。通过本节可以了解到纹理映射的概念和原理二维纹理映射的处理方法使用纹理增加物体表面细节要使渲染的物体更加逼真...转载 2018-05-15 10:07:00 · 2624 阅读 · 0 评论