每月归档: 四月 2017s


OpenGL(四) Shader错误 检测

由于shader不需要预编译,因此在OpenGL动态加载时会碰到 shader错误 。因此需要区分错误属于C++代码还是shader代码。本文主要探讨如何封装检测 shader错误 的接口。 原理  在OpenGL中有方法能够获取到 shader错误 信息。使用: [crayon […]


OpenGL(三) 加载贴图

有了模型还需要贴图。 加载贴图 的流程大体分为两部分,首先是图片的解码,其次是使用UV坐标与模型对应。本文主要从底层原理和第三方库两个方面来介绍 加载贴图 。 解码 下面分别介绍硬编码实现和SOIL库两种方式。 硬编码实现 因为加载不同的类型图片偏移值不一样,加载图片之前要确定图 […]


Dota2 AI开发tutorial(一)AI 的 环境配置

引子 最近打Dota2,发现人机对战电脑时 Dota2 AI 特别的傻。过了30分钟,友军又不带线,又不打野,来来回来闲逛;敌军5人抱团满图抓我。这种1V5经常以被控到死收场,真是伤感。忽然想起V社似乎开放了AI接口,身为游戏开发者,拯救万民于水火义不容辞啊。树枝吃喝买起来,就有 […]


OpenGL(二) 加载模型 1

在OpenGL(一) OpenGL管线 与 可编程管线流程中,提到加载VBO、IBO的相关技术,本篇详细说一下。实际应用时,我们是不可能手写顶点和索引点。通常模型是使用3dMax或Maya制作,然后在OpenGL程序中 加载模型 。本文着重分析这些文件的格式以及 加载模型 的流程 […]


Unity3d 开发 通过 shader编译参数 整合代码

在编写大型项目的shaders时,大多数像素混合算法都是通用的,而且基本上一旦完成就不会更改。另一方面,在shader中不宜做分支逻辑,会引起效率上的消耗。因此很为了更好的组织shader代码,Unity引入了 shader编译参数 来解决这个问题。 原理 由于GPU中的寄存器结 […]


OpenGL(一) OpenGL管线 与 可编程管线流程

由于OpenGL是一个纯渲染核心,要写OpenGL程序,得先搭建一个外壳程序。不同平台下外壳程序的实现各有不同,这个系列的文章都在win32的平台上进行。具体实现,网上能找到很多,所以这不是本文的重点。本篇主要构建探讨 OpenGL管线 本身,具体说来,就是构建可编程管线。 主体 […]