0%

投影方式

OpenGL有两种投影方式

投影方式 说明 函数
正投影 相同的物体远近看起来都一样大 GLFrustum::SetPerspective(float fFov, float fAspect, float fNear, float fFar)
透视投影 近大远小 GLFrustum::SetOrthographic(GLfloat xMin, GLfloat xMax, GLfloat yMin, GLfloat yMax, GLfloat zMin, GLfloat zMax)
阅读全文 »

背景

当我们在绘制3D图形的时候,由于观察者的角度问题,3D图形拥有多个面,假设所有的面是不透明的,在前面的面是可见的,而背后的面是不可见的,对于不可见的部分,不应该渲染出来,并且出于性能的考虑,应该丢弃(如下面正方体有6个面,而我们能看到的只有三个面),对于下面正方体,面比较少,影响不大,但对于一些复杂的3D图形,影响就比较大了,这种问题称为隐藏面消除/找出可见面(Hidden surface elimination/Visible surface detemination)

阅读全文 »

几乎做iOS开发的人都知道,设置圆角会触发离屏渲染,那么什么情况下设置圆角不会触发离屏渲染呢,为什么会触发离屏渲染。

阅读全文 »

通过使用OpenGL绘制一个三角形,了解OpenGL的一些常用API和绘制流程,这里使用了GLUT(OpenGL Utility Toolkit)的API,GLUT是OpenGL官方提供的OpenGL工具箱,封装了一些有用的工具,用于辅助操作OpenGL

阅读全文 »

CPU和GPU

从图中结构可以看出

  • CPU的处理单元少,由控制器和缓存单元,擅长处理复杂的逻辑以及数据结构,CPU中的并行其实是通过时间切片完成的。任务之间依赖性高,擅长逻辑控制
  • GPU是由许多计算单元组成,每个计算单元可以独立工作,任务之间依赖性低,擅长浮点运算,擅长并发计算
阅读全文 »

我们知道,flutter有三颗树,widget树在每次setState的时候都会重建,而element树不会,而是会通过diff算法,计算出哪些element需要重建,哪些element可以重用,我们通过一个例子来开始

阅读全文 »

为了更好的学习 OpenGL,我们需要对部分专业属于有一些基本认识,本文介绍在计算机图形学常用的一些专业名词

阅读全文 »

最近在做一个聊天的页面,参考微信的聊天页面,对ListView有下面几个需求

  1. 使用列表Widget,例如:ListView, CustomScrollView等
  2. 支持scrollToEnd,当键盘,表情面板,工具面板弹出时,消息滑动到底部
  3. 支持获取位置用于跳转getCurrentIndexInfo,用于保持加载数据时候的位置不变
  4. 支持jumpToIndexscrollToIndex,避免手动计算位置
  5. 滑动位置要准确,没有误差
  6. 滑动到底部不会出现bounce
  7. 由于键盘上移的时候scrollToEnd
阅读全文 »

性能优化是一个开发者不可避开的话题,本文讨论iOS的性能体现在以下几个方面

  • CPU占用率
  • 内存占用率
  • 卡顿监控/FPS
  • GPU离屏渲染
  • 耗电监控
  • 启动时间
阅读全文 »