
3D渲染技术专栏
文章平均质量分 80
三原色,三角形,三生万物
ryfdizuo
腾讯专家开发工程师(T12/T4-1) Live Long And Prosper.
展开
-
图形渲染中的定点数和浮点数
图形渲染中的定点和浮点原创 2025-04-04 19:47:59 · 506 阅读 · 0 评论 -
【全网最朴素】渲染色彩知识图谱
色彩和高清晰显示的理论和实践原创 2025-02-12 22:01:44 · 202 阅读 · 0 评论 -
vulkan从小白到专家——RenderPass&Framebuffer
渲染最重要的就是每帧的执行逻辑,一帧包含多个renderPass。如果pipeline跟drawcall对应,那么renderPass是包含了一组pipeline。RenderPass定义了vulkan渲染过程中要使用到的三种Object的细节,分别是。原创 2025-01-31 12:24:45 · 1175 阅读 · 0 评论 -
vulkan从小白到专家——VulkanSwapChain
Vulkan交换链相关的配置和含义说明,原创 2025-01-04 16:19:16 · 942 阅读 · 0 评论 -
不靠谱的GLES-PBO技术
移动端pbo实现像素下载的理论分析和实测对比原创 2024-11-19 17:23:04 · 1101 阅读 · 0 评论 -
三角化库对比分析
主要对比triangle库和libtess,压箱底的数据,share出来。包大小对比libtesstriangle包大小30k82k风格cc性能对比地图三角化中随机选了一批顶点个数的多边形,性能结果如下:sizetesstri(ms)4662253422602226092261522626327513280033112853123983.原创 2020-06-28 12:03:58 · 1092 阅读 · 0 评论 -
关于glReadPixels的两点心得
opengles 开发珠玑~_~原创 2015-05-02 22:11:48 · 17090 阅读 · 2 评论 -
cocos2dx下离屏渲染遇到的问题
opengl状态错乱导致的渲染问题,定位、总结、反思!原创 2015-04-08 10:32:34 · 3557 阅读 · 0 评论 -
GLSurfaceView中GL相关资源销毁问题
GLSurfaceView中GL相关资源销毁问题原创 2015-02-13 16:20:32 · 9085 阅读 · 0 评论 -
APP移植到小米Pad上的Crash分析
小米PAD上的APP的移植错误。OpenGL状态不严谨引发的经典错误。!。原创 2014-06-17 15:02:46 · 2559 阅读 · 0 评论 -
【踩雷】android 中UI线程内调用gl指令的结果
android系统设置开启GPU硬件加速,UI界面中控件的贴图随机性丢失,变成一系列的黑块。问题定位,分析。。。原创 2014-01-27 17:09:19 · 3472 阅读 · 3 评论 -
OpenGL错误和性能Tips
opengl开发遇到的一些坑,也算是经验之谈吧!原创 2013-11-28 18:53:17 · 3114 阅读 · 0 评论 -
不简单的【线段求交】
一直以来感觉线段求交这种级别的算法很easy,甚至没有专门研究的必要,实际操作过程发现简约不简单,需要考虑各种特殊case。google一些后还是没有满意的结果,有理论的没有code,有code的没有理论甚至怀疑有漏洞。最后融会贯通后给出一个可用的版本:1. 通过两个线段的包围盒快速拒绝。2. 处理包围盒相交,但实际线段并不相交的case:两条线段不相交,当且仅当:一条原创 2013-12-07 19:03:01 · 2974 阅读 · 4 评论 -
关于压缩纹理的格式的思考
常见的图像格式bmp、jpeg以及jpeg2000,以及png;甚至最近几年google的webp格式。bmp格式基本上没有压缩;jpeg是有损压缩,早已成为图像传输标准,不支持透明通道;jpeg2000最显著增加渐进式传输。jpeg可以任意指定感兴趣区域的压缩质量。png无损压缩,支持透明通道,android的各种资源都是png。webp,最近几年google的开源项目,更高的压原创 2013-11-30 14:43:10 · 5080 阅读 · 4 评论 -
OpenGL绘制矢量路径的思路
1. 引言软件方法绘制,如QT、Android(skia)都自带2D绘图引擎,支持矢量路径填充并且抗锯齿!如果使用OpenGL绘制矢量,对建模算法以及纹理都有要求,不同的建模算法决定了最终的视觉效果。OpenGL绘制路径,抗锯齿效果由纹理来实现。下面介绍两种不同效果的路径实现和绘制:2. 纯色圆角路径通过纹理方式实现抗锯齿单色路径绘制。建模算法非常简单:将一个polyline分解成原创 2013-08-05 10:17:46 · 8144 阅读 · 4 评论 -
二维中的OBB相交测试
OBB方向性!求交核心思想:向量点积的投影意义,unitX为(1,0)单位向量, A.dot( unitX ) 为A点的x值,表示在x轴上的投影。。flipcode上面求交有问题,投影结果坐标系不统一。原创 2013-10-23 21:05:53 · 4282 阅读 · 1 评论 -
opengles 2D渲染性能
2D中最基本的是渲染一个图片,OpenGL接口中想到的有以下几种方式:1. glDrawPixels直接将图像数据写到颜色缓冲区中,不够灵活,而且移动设备端不支持。2. draw_texture_quadopengles1.0标准支持,1)将图像数据上传到OpenGL服务器显存,创建纹理对象;2)将顶点数据上传到OpenGL服务器显存,然后走OpenGL固定流水线最终显示到原创 2013-01-06 17:58:14 · 3398 阅读 · 0 评论 -
OpenGL渲染字体的批处理操作
一、问题描述在OpenGL中,绘制字体通过纹理贴图的方式。一个场景中有200个单词,按照正常做法:一个单词生成一个贴图,指定Quad四个顶点纹理坐标,最后把数据传给OpenGL,进行绘制。OpenGL顶点数组是客户端-服务器模式:客户端是当前应用程序;服务器端包含三部分:链接到应用程序中的OpenGL库、在操作系统内核中的OpenGL驱动、以及GPU。绘制200个单词中,每个单词都需要原创 2012-08-11 15:27:37 · 3385 阅读 · 0 评论 -
android上opengl性能分析工具
最新版 android adt 中包含了opengles trace 选项。高通提供了一个adreno gpu上的性能分析工具,可以直接分析android / PC上opengles应用程序的性能。1. opengles trace1.1 版本要求1)Android adt : adt-bundle-windows-x86-201302192)Android NDK : and原创 2013-03-01 15:58:21 · 9746 阅读 · 1 评论 -
FBO中如何使用模板缓冲区
FBO常用框架一般需求只有color buffer,depth buffer,前者一般用纹理,后者一般用rbo。标准程序如下:// 创建 // frame buffer object glGenFramebuffers(1, &fboId); glBindFramebuffer(GL_FRAMEBUFFER, fboId); // color buffer with textur原创 2013-03-21 15:15:00 · 5783 阅读 · 1 评论 -
OpenGL纹理UV动画
关闭混合的效果:参考1. OpenGL经典教程:Nate Robin可视化教程2. CodeSampler: http://www.codesampler.com/oglsrc.htm原创 2013-07-08 15:34:31 · 5884 阅读 · 0 评论 -
android上gl纹理资源路径的问题
问题描述:glsurfaceView中通过纹理绘制图形,纹理长宽为2的幂次,128*64,资源放在res/drawable文件夹下面。发现在hdpi手机上图形为白色。初步判断纹理丢失。为什么纹理丢失呢?我直接把问题归咎于奇葩的android,感觉hdpi手机优先搜索drawable-hdpi文件夹,并没有搜索drawable目录。通过实际盘查,资源上传gl前将图片保存到磁盘,发现图片确原创 2013-09-18 20:07:50 · 1860 阅读 · 0 评论 -
基于bass& glut的声音可视化
声音的振幅。bassglutopengl sound原创 2010-11-04 14:27:00 · 7853 阅读 · 4 评论 -
OpenGL实现立体显示
立体显示原理:设没有立体显示的模型视图矩阵ModelView为Mv,投影矩阵为Mp,则、物体空间的任何一点为P,则变换到屏幕坐标P*=Mp×Mv×P;注意前面已经说过opengl里面坐标列优先,所以矩阵都是右乘。左眼和右眼的变换都是由中间的变换矩阵变换而来,则立体显示中左眼的变换矩阵公式为:P(L)*=Ms(L) × Mp(L) × Mt(L) × Mv(L) × P;右眼的矩阵变换公原创 2008-04-25 14:35:00 · 9495 阅读 · 6 评论 -
基于opengl的RoundBox绘制
openglRoundBox原创 2010-07-08 20:08:00 · 3277 阅读 · 1 评论 -
基于OpenGL实现的多段Bezier曲线拼接
运行程序的交互方式有点类似corelDraw中的自由曲线绘制,或者photoShop中的钢笔自由路径绘制。截图: 将BezierCurve封装成了一个类,代码如下: #ifndef _BEZIERCURVE_H#define _BEZIERCURVE_H#include "vec3.hpp"#include #include #include u原创 2009-10-26 12:51:00 · 8438 阅读 · 7 评论 -
理解OpenGL中的模型视图矩阵变换
对于学习OpenGL,或者其他的API,基础的矩阵变换是最重要的。矩阵变换是重中之重。下面就拿红皮书上的最简单的demo:cube.c来说。调用函数 glMatrixMode (GL_MODELVIEW);指定修改模型视图矩阵,以后调用glLoadIdentity (); 将当前的矩阵置为单位矩阵,有利于后面的运算。下面我们假设将对创建的模型glutWireCube (1.0); 进原创 2008-04-17 22:28:00 · 12267 阅读 · 1 评论 -
OpenGL中的矩阵相乘的顺序
1,在OpenGL中所有的视图变换,模型变换 都是4×4矩阵,每个后续的glMultiMatrix*(N),或者变换函数,glTranslate*(),glRotate*(),等都是把一个新的4×4矩阵与当前的矩阵M相乘,不同的是:变换函数glTranslate*(),glRotate*()等会根据函数参数构造一个4×4矩阵,也设为N,两种情况产生相同的结果:M×N。注意这里的顺序,后续的矩阵是右原创 2008-04-24 21:41:00 · 11464 阅读 · 0 评论 -
OpenGL下通过鼠标动态绘制三次Bezier曲线
三次Bezier曲线有四个控制节点。利用OpenGL的一维求值器原理。 程序介绍:第一次鼠标左键down点为0控制节点, 按住左键移动动态移动确定1控制节点,第二次鼠标左键down点3控制节点,按住左键移动,确定2控制节点。程序运行的效果图: 代码只是实现了绘制一段Bezier如下:#include #include #include usin原创 2009-09-21 14:00:00 · 7569 阅读 · 3 评论 -
OpenGL圆柱面绘制贴图
最近看到dx中的sample中有用顶点数组实现的圆柱体贴图的程序。于是自己写了一个圆柱体的类,支持生成纹理坐标,法线,坐标。构造圆柱体的参数主要有:水平分段数(就是上下圆的分段数目),高度上的分段数目,(至少有两段:上下两个圆面)半径,高度。顶点生成的原理:将圆柱面展开就是一个矩形。而纹理也是一个矩形区域,需要注意的是圆柱面是一个首尾相接的封闭面。效果图如下:原创 2009-12-02 18:21:00 · 11127 阅读 · 8 评论 -
OpenGL实现画笔
opengl画刷stroke原创 2011-01-18 14:50:00 · 6071 阅读 · 2 评论 -
OpenGL Matrix Library
opengl mathematics matrix 矩阵库原创 2011-05-14 15:32:00 · 4537 阅读 · 0 评论 -
opengl实现任意两点间画圆柱体
1,问题提出两点间画线简单:glBegin(GL_LINES); //注意是LINES不是LINE,这个错误一定要注意。 glVertexf(x1, y1, z1); glVertexf(x2, y2, z2);glEnd();画线函数不会影响opengl的矩阵堆栈。 但是很多时候线条效果会比较差,比如我要做一个骨骼动画,关节点间的骨头用线条太难看,即使使用glLin原创 2011-06-16 13:21:00 · 12401 阅读 · 4 评论 -
基于OpenGL的角色动画实现
我的本科毕设做的是一个BVH文件解析,角色关节也是一个多叉树,层次变换树。孩子节点依赖于结点的变换。上图中的角色以躯干Torso为根节点,脖子和头属于一个子树;左右手臂、左右腿分别属于四个子树,所以上图是一个五叉层次变换树。尤其强调的是手臂支持三个维度的运动,所以需要需要增加x,y,z的三层虚节点。右手臂的子树为:Torso/RShoulderX / RShoulderY/RShoulderZ原创 2012-03-19 12:57:23 · 8591 阅读 · 7 评论 -
利用OpenGL绘制按钮
通过OpenGL自己绘制按钮,菜单,可以自己贴图,可以自己构建很炫的GUI。我这里只是做了一个最原始的模型, 没有增加贴图。程序实现思路:通过正交变换绘制出按钮cube, 然后重置投影视图矩阵,转入场景绘制。具体在display函数里。主要想想说一下几个细节问题:1,正交投影的坐标系原点位于左下角, 而透视投影坐标系原点位于窗口中心。2,mouse函数参数x,y分别是鼠标的坐标,原创 2009-02-28 13:54:00 · 12264 阅读 · 11 评论 -
基于模板测试实现半透明多边形运算
通过OpenGL的帧缓存实现多边形常见操作:联合、求交、做差。原创 2013-03-28 19:11:58 · 3158 阅读 · 0 评论 -
OpenGL错误总结
const char* getGLErrorInfo(int errorId){ switch (errorId) { case GL_INVALID_ENUM: return ("GL Invalid Enum\n"); case GL_INVALID_VALUE: return ("GL Invalid Value\n"); case GL_INVALID_OPERATIO原创 2012-05-23 10:34:36 · 15094 阅读 · 0 评论 -
3D坐标系变换
3D坐标系变换~原创 2011-03-30 08:38:00 · 14337 阅读 · 0 评论 -
android x64平台适配的渲染异常的问题
1 问题左图是出问题的,白色顶面显示异常;右图是标准的。看症状是顶部白色没了。想不通,ios上这些平台都没问题。。x64的代码出问题,看代码也没有特别的指针,int强转之类的风险,只能搭环境。2 AS上搭建环境AS工程,真是折腾:网络问题,很多组件动态拉取,经常这次ok下次启动可能就一堆问题, gradle版本问题,android sdk,jdk,ndk版本问题,能不能像V...原创 2019-08-30 00:04:04 · 898 阅读 · 0 评论