OpenGL(八)使用 subroutine 切换可编程管线 1

Subroutine 功能是在OpenGL 4.0 版本里才增加的,因此对于各种Android手机,这个功能基本跪了。如果你发现你的程序报错:ARB_shader_subroutine,那就说明当前显卡不支持。不过大体思路可以了解一下,因为思路类似的功能有其他的实现方式。 原理 […]


通过 adb 检查 Android 内存

使用Unity3d的Profiler可以查看Unity3d项目使用的内存。对于IOS有Instruments来查看内存状况,对于 Android内存 也是有adb工具可以查看的。不过数据似乎不那么明朗,本文介绍了Android内存分布的基本指标,并介绍三种方法来查看内存,欲知具体 […]


OpenGL(七) GeometryInstancing 几何体实例化 2

几何体实例化( GeometryInstancing ),或者说实例渲染(Instanced Rendering),是一种用于大批量重复物件渲染的GPU技术,以降低客户端和显卡端数据传输量,所谓的“一次提交,多次渲染”。简单说来就是合并DrawCall。 原理 通过 [crayo […]


OpenGL(六)使用 VAO 打包指令 优化代码结构

通常说来当创建好vbo的数据结构,还需要设置glVertexAttribPointer等一系列属性,在OpenGL中提供了 VAO (Vertex Array Object)它相当于同时记录了数据在哪里和数据是怎样分布。从实际应用的角度,它最重要的贡献就是简化了代码。 原理 通过 […]


OpenGL(五) 指令错误 检测的封装方法 1

OpenGl的指令,返回值均为void,因此没法通过返回值来判断 指令错误 。为了能够第一时间发现问题,需要加入一个封装来监测是否有指令调用失败。 原理 当OpenGL调用出现错误时,会将错误的ID储存到一个GLenum中。这个值可以通过 [crayon-5b29e34f5253 […]


OpenGL(四) Shader错误 检测

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


OpenGL(三) 加载贴图

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


Dota2 AI 开发 tutorial(二)定制AI阵容 配置英雄出装 5

在 Dota2 AI 开发(一)环境配置 中介绍了如何搭建 Dota2 AI 的开发环境,在这篇文章中,主要介绍Dota2中AI的常规控制方式,并介绍如何在人机比赛中配置一个裸跳刀的Sven。 常用指令 重新加载Lua脚本:dota_bot_reload_scripts 加速游戏 […]


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管线 本身,具体说来,就是构建可编程管线。 主体 […]


Unity3d 开发 OnMouse_产生GC 的问题修复

最近发现一个特别奇怪的现象,在游戏运行时,每帧 OnMouse_产生GC ,大小是0.6KB的整数倍。具体Profiler效果如下图所示: 解决方法 经过比照发现这个问题与摄像机相关。由于是代码创建的摄像机组件,因此并未挂载GUILayer组件。解决这个问题的方法就是使用AddC […]


99%游戏开发者都不知道的 游戏运营词汇

作为游戏开发者,在实际工作过程中经常遇到一些 游戏运营词汇 。它们可以从各个层面来衡量游戏的健康状态,供我们进行分析,发现游戏存在的问题。那么究竟该留意哪些些数据呢?或者说该从何入手了解这些数据?本文提供一个简单的索引,帮助大家认清方向,同时也可以方便的查看相关的概念。 数据收集 […]