Opengl_入门学习分享和记录_00
2019.7.4
本着对游戏创作的热情,本人初步了解了一部分的unity引擎的使用,也学习了一点C#可是越学习unity我就反而对引擎内部感兴趣(不知道有没有一样的朋友=,=)。
接着了解到了opengl 以及他的衍生物们(SDL , GLFW , GLEW等),感觉所有的有关渲染的API或者说是函数库(本人一直很讨厌把专业知识说的太官方。。见谅)都是“扎根”于opengl。
接下来我想简要的谈谈我对opengl 的理解,也就是什么是opengl?
首先本人只是一位普普通通的大二在校学生,可能有很多地方说的不正确,希望到时看到文章的大佬们赐教! 小弟万分感谢!!(当然随着这个系列的更新 我对opengl的理解加深,到最后我应该会对它有新的认识,哈哈留个记录在这,看到最后我究竟会对它怎么理解)
首先对我来说 opengl 是由C语言写成的一套可以让程序员操纵计算机渲染(操纵底层显卡)的方法的集合。我们通过调用其中提供的方法可以 对渲染管线(我更喜欢叫它渲染流水线)进行(部分)编辑从而达到我们想要的效果,同时opengl 还可以直接通过其他应用程序对已经创建完成的渲染管线进行调用(可能这就是显卡驱动程序的工作方式吧),当然另一种方法则是通过程序员自己的输入在告诉opengl该如何绘制图形(初学者应该都是先从这一步开始的)。
在之后我想谈谈我对渲染流水线理解,但在这之前 我想先说说我对一个游戏运行起来后的显卡和CPU具体是怎么工作的做一个简要说明。(当然以下内容全是自己的一些理解和猜想。。希望大佬们不吝赐教)
首先游戏其实都是一帧帧图像构成的,每一秒有大量的图片渲染到大家的显示器上,每张图片又是大量的像素点构成的,屏幕上的像素点改变成什么颜色?渲染多少个像素点?等等这一系列的问题都是通过渲染流水线来决定的。 现在假设 游戏启动,游戏需要的资源先加载到内存中,然后根据玩家对游戏的操纵,cpu计算出顶点(vertex)的位置和颜色(很多为一组),然后将其发送给GPU告诉显卡该做如何的渲染,这样GPU通过其中的渲染管线对顶点链接和着色。(其中会牵扯到许多空间管理的地方,VBO,EBO,VAO等)。。顶点属性,顶点数据,GLSL等等更多的知识,目前暂时介绍到这里(毕竟我才学习到纹理。。而且SOIL没有适配上MACOS,可能之后会有一个讨论帖讨论这个问题。),希望能给刚刚开始学习图形学的朋友们一些帮助,毕竟感觉国内图形学的学习资源很少,而且质量不高。
Opengl_入门学习分享和记录_00的更多相关文章
- Opengl_入门学习分享和记录_02_渲染管线(一)顶点着色器&片段着色器
写在前面的废话:今天俺又来了哈哈,真的好棒棒! 今天的内容:之前我们大概描述了,我们自己定义的顶点坐标是如何被加载到GPU之中,并且介绍了顶点缓冲对象VBO用于管理这一块内存.今天开始详细分析它的具体 ...
- Opengl_入门学习分享和记录_番外篇01(MacOS上如何在Xcode 开始编辑OpenGL)
写在前面的废话: 哈哈 ,我可真是勤勉呢,今天又来更新了,这篇文章需要大家接着昨天的番外篇00一起食用! 正文开始: 话不多说,先看代码. 这里主要全是使用的glfwwindowhint 这个函数,他 ...
- Opengl_入门学习分享和记录_01_Graphics Pipeline(图形渲染管线)
写在前面的废话: 这个系列拖更了很久,很大一定程度上是由于自己最近忙着高数学习和线代学习..感觉时间特别紧缺(其实就是我太懒了)好了不废话了,总结开始. 正文开始: 首先Graphics Pipeli ...
- Opengl_入门学习分享和记录_03_渲染管线(二)再谈顶点着色器以及顶点属性以及属性链接
---恢复内容开始--- 写在前面的废话:岂可修!感觉最近好忙啊,本来今天还有同学约我出去玩的.(小声bb) 正文开始:之前已经编译好的着色器中还有一些问题,比如 layout(location=0) ...
- Opengl_入门学习分享和记录_02_渲染管线(一)顶点输入
现在前面的废话:最近好事不断!十分开心!生活真美好! 好了今天要梳理一下,顶点输入的具体过程,同样也是渲染管线中的第一个阶段的详细过程的介绍.之前介绍过,OpenGL操作的是一组3D坐标,所以我们的输 ...
- Opengl_入门学习分享和记录_番外篇00(MacOS上如何给Xcode 适配openGL)
现在前面的废话:哇这次没有鸽太久,突然想起来还没有介绍如何适配opengl的衍生库.今天一并介绍下,同样看时间允不允许,让我再把之前学到的一些东西再次总结一遍. 正文开始: 首先大家要知道我们的Ope ...
- Opengl_入门学习分享和记录_03_渲染管线(三)借助顶点数组对象VAO提高绑定属性效率
目前我们已经知道了,如果想要顶点着色器解释理解我们的输入数据,就必须要按照以下繁琐的步骤:第一步:将输入的数据复制一份到缓冲区,供OpenGL使用.而这块新出现的区域由VBO管理和表示.(若有多个输入 ...
- Redis入门学习(学习过程记录)
Redis(入门笔记) 学习一个大的技术点,然后顺带着就把这个技术点的面试题给学习了. 学习完一个技术后,如果面试题还不能够解答的话,只能说明学的不精,需要查漏补缺. 下一个学习的方向:Redis-非 ...
- Bootstrap入门学习笔记(只记录了效果)
基本头文件 <!DOCTYPE html> <html> <head> <title>Bootstrap 实例</title> <me ...
随机推荐
- ffmpeg+nginx将rtsp转为rtmp
一.安装ffmpeg 1.http://ffmpeg.org/download.html下载地址,选择合适的操作系统版本下载,因为我的操作系统是centos7,所以下面的安装都是命令都是针对cento ...
- QT知识整理
1.connect函数的SIGNAL可以是按键.定时器.其他对象的信号.如果是其他对象的信号,对象必须要在当前类中实例化. 2.Qt数据类型转换 1)int转QStringint a=10;QStri ...
- java8中stream常用方法详解
map: 用作类型转换 如把集合里面的字符串转为大写,或者一个对象的集合取几个字段转为新的对象集合filter: 过滤 符合条件的集合元素保存下来,不符合条件的去掉flatMap:合并集合,比如Lis ...
- MyBatis从入门到精通:使用XML方式(映射文件之类的)
2.3节笔记部分: package tk.mybatis.simple; public class Temp { } /* 2.2 使用XML方式 MyBatis使用了Java的动态代理可以直接通过接 ...
- MFC开发--截图工具
近期学习了MFC的相关知识,MFC(Microsoft Foundation Classes)是微软公司提供的一个类库,可以这样简单理解,就是对于Win32的封装(MFC对windows API函数的 ...
- js的事件冒泡机制
js的事件冒泡机制呢,就是一个DOM树,一级一级向上冒的过程,最终是到document这个根节点这里.js的事件冒泡机制,就像是一个水泡在水底下,冒泡到水面的过程. 摘自醉清玄
- SGU495 Kids andPrices[期望DP]
也许更好的阅读体验 \(\mathcal{Description}\) 有\(n\)个格子,每次等概率随机给一个格子染色,问涂\(m\)次后期望有多少格子被染色了 \(\mathcal{Solutio ...
- Java创建线程的两个方法
Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...
- JSON的简单使用之提取多层嵌套的JSON(C#)
JSON.NET(http://json.codeplex.com/)使用来将.NET中的对象转换为JSON字符串(序列化?),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?) 反序列 ...
- python中的内存机制
首先要明白对象和引用的概念 (例子:a=1, a为引用,1为对象,对象1的引用计数器为1,b=1此时内存中只有一个对象1,a,b都为引用,对象的引用计数器此时为2,因为有两个引用) a=1,b=1 i ...