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 ...
随机推荐
- TCP/IP协议、三次握手、四次挥手
1.什么是TCP/IP协议 TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合. 传统上来说 TCP/IP 被认为是一个四层协议 1) 网络接口层: 主要是指物理层次的一些接口,比如电缆等. ...
- C++学习书籍推荐《More Exceptional C++(英文)》下载
百度云及其他网盘下载地址:点我 作者简介 Herb Sutter is the author of three highly acclaimed books, Exceptional C++ Styl ...
- java接口自动化(一) - 接口自动化测试整体认知 - 开山篇(超详解)
简介 了解什么是接口和为什么要做接口测试.并且知道接口自动化测试应该学习哪些技术以及接口自动化测试的落地过程.其实这些基本上在python接口自动化的文章中已经详细的介绍过了,不清楚的可以过去看看.了 ...
- 9.5 考试 第三题 奇袭题解(codeforce 526f)
问题 C: 奇袭 时间限制: 1 Sec 内存限制: 256 MB 题目描述 由于各种原因,桐人现在被困在Under World(以下简称UW)中,而UW马上 要迎来最终的压力测试——魔界入侵. 唯 ...
- 预学第二天:计算机的基础知识+python安装+pycharm安装+思维导图
目录 计算机的基础知识 计算机是由什么组成的 什么是操作系统
- 【题解】P2078 朋友-C++
题目传送门 这道题目就是一个模板并查集 但是!唯一不同的地方在于,这道题的编号有负数. C++的map你忘了吗!!!下表可以是任意类型. 所以把fa数组开成一个int->int的map就可以了 ...
- 如何在一个项目中兼容Wepy和Taro?
背景交待 NJ 项目启动初期,团队技术栈主要是基于 Vue,技术选择上就选择了类 Vue 的 wepy.迭代几个版本后 mpvue 出来了,简单调研了下,准备基于 mpvue-simple 开发部分页 ...
- Visual Studio 调试(系列文章)
调试是软件开发过程中非常重要的一个部分,它具挑战性,但是也有一定的方法和技巧. Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题. 该调试器可用于所有 Visual Stud ...
- jQuery中的事件与动画 笔记整理
一. jQuery中的事件 jQuery事件是对javaScript事件的封装. 1.基础事件 在javaScript中,常用的基础事件有鼠标事件.键盘事件.window事件.表单事件.事件的绑定和处 ...
- druid0.15.0安装方式
Druid0.15.0安装文档 1 集群规划 Master包含Coordinator和Overlord,4核16G*2: data包含Historical和MiddleManager,16核64G*3 ...