文档章节

glTexSubImage

来来叔叔
 来来叔叔
发布于 2017/08/04 23:56
字数 350
阅读 7
收藏 0

码上生花,ECharts 作品展示赛正式启动!>>>

 

今天把一个使用OpenGL绘图的状态机搞定了。主要就是合并相同属性的图形,减少glDrawArrays的调用次数,以达到提高运行速度的目的。调试时,注意从简单到复杂。最简单的情形即是不合并图形,与原算法一致,如果这样都不正确,就先要查这个层次的问题。逐渐增加算法的复杂度,这样可以缩小每步中解决问题的难度。

使用glTexSubImage可以只更新一部分纹理数据,减少调用glTexImage2D所产生的创建纹理和更新全部纹理数据的开销。如果每次都只是更新一少部分纹理(包括第一次都不想提交所有数据),可以如下操作:

glBindTexture(GL_TEXTURE_2D, curTexID);
 if (used > 0)
 {
  glTexSubImage2D(GL_TEXTURE_2D, 0, xoff, yoff, 
   subw, subh,
   GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT,
   (void*)subbuf);
 }
 else
 {
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 
   w, h, 0,
   GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT,
   (void*)(NULL));   

  glTexSubImage2D(GL_TEXTURE_2D, 0, xoff, yoff, 
 subw, subh,
   GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT,
   (void*)subbuf);

used++;

}

 有个疑问:glTexSubImage中,data是一块连续的数据,不知OpenGL可否用一块矩形区域的缓存来更新纹理?即指定目标区域起始坐标和宽高的同时,在源数据中也可以指定起始坐标和宽高?

© 著作权归作者所有

来来叔叔
粉丝 1
博文 100
码字总数 55732
作品 0
广州
高级程序员
私信 提问
加载中
请先登录后再评论。
OpenGL超级宝典笔记——纹理映射Mipmap

Mipmapping Mipmap是一个功能强大的纹理技术,它可以提高渲染的性能以及提升场景的视觉质量。它可以用来解决使用一般的纹理贴图会出现的两个常见的问题: 闪烁,当屏幕上被渲染物体的表面与它...

Mario_Q
2013/11/20
1.7W
0
关于opengl中多重纹理,离屏与渲染到屏幕切换,可编程管线有固定管线切换的理解

最近用opengl写项目时遇见几个问题,感觉比较通用写下啦分享; 一, opengl多重纹理的使用 二, opengl离屏渲染与渲染到屏幕切换使用 三, opengl可编程管线与固定管线切换使用 经过一个成功...

lixiaoguang20
2018/04/23
0
0
OpenGL超级宝典笔记——纹理映射(一)

纹理映射,是将纹理空间中的纹理像素映射到屏幕空间中的像素的过程。 纹理映射是真实感图像制作的一个重要部分,运用它可以方便的制作出极具真实感的图形而不必花过多时间来考虑物体的表面细...

Mario_Q
2013/11/12
3.7W
3
OpenGL超级宝典笔记——纹理高级(一)

辅助颜色 一般情况下,我们设置纹理的环境为GL_MODULATE模式,在这种情况下,受到光照的几何图形会和纹理的颜色进行结合。正常情况下,OpenGL进行光照计算,并根据标准的光照模型进行单个片段...

Mario_Q
2013/11/27
1.2W
1

没有更多内容

加载失败,请刷新页面

加载更多

没有更多内容

Elasticsearch如何查询使用JSON字符串的DSL

背景 Java处理ES查询逻辑,有一种情况是用户从其他地方粘贴或者手动输入的JSON字符串的DSL语句;这个时候就没法使用QueryBuilder来构建所需要的SearchSource。查了查发现有个Wrapper的方式可...

叫我哀木涕
今天
19
0
JDBC:ResultSet Types

ResultSet Types 用于确定ResultSet的某些特征和功能。 ResultSet.TYPE_FORWARD_ONLY 只能调用 next,不能调用 previous 。否则报错 ResultSet.TYPE_SCROLL_INSENSITIVE 能调用 next/previou...

mrsuperli
昨天
7
0
Cesium笔记(3):基本控件简介—ImageryProvider地图瓦片地图配

cesiumjs中可定制多种图层,可以使用互联网上很多地图提供商的图层数据,也可以使用自己的地图数据。Cesium支持多种标准化格式的GIS瓦片服务,可以把栅格图层绘制到地球的表面——cesiumjs的...

zhoulujun
昨天
17
0
跟小伟一起学习类加载机制

我们在学习 java 基础的时候,从宏观上了解了一个类到运行大致是:.java 文件通过 javac 编译器编译得到 .class 文件,在用到该类时,jvm 会加载该 class 文件,并创建对应的 class 对象,将...

niceyoo
昨天
16
0
Electron整合React使用搭建开发环境

Electron整合React使用搭建开发环境 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 简介 用于构建用户界面的 ...

归子莫
昨天
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部