2022-11-17
前几天刚弄完将FBX文件内的模型骨骼动画实现到自己的游戏,但是看着那只有线条的正方体模型在那走来走去总觉得缺少一点美感,于是乎觉得应该开始研究纹理了
这几天就一直在研究纹理,以将纹理加载并附着到模型上
另外弄懂了DXT1格式的压缩纹理,DX叫做BC1格式
为了弄明白纹理和压缩纹理在内存中的模型,我决定自己做一个能显示纹理的小组件,以方便自己以后能轻松的与各种纹理打交道
这也就意味我需要了解压缩之后的纹理在内存中的布局,首先我选了一个最简单的DXT1/BC1格式的没有带mipmap的压缩纹理文件作为开始
我尝试将这种类型的纹理进行解压,但尝试了更多的失败,首先是需要使用GDI+将图像显示到屏幕,将图像文件加载到GDI+进行显示还是比较简单的
于是我开始尝试加载压缩的DXT1纹理文件并自行解压然后加载到GDI+进行显示
首先我了解到这种格式的压缩算法,系将纹理以16个像素为单元进行压缩,DXT1算法最终将RGB颜色压缩到每个像素仅用4位就能表达
对于首次接触到压缩图像的我还是比较惊叹前人的智慧,毕竟在我的理解中4位最大数才能表示16个数字,但经过压缩后却能表达RGB3种颜色值
DXT1以16个像素进行压缩,一开始我尝试将连续内存的64位解析成color_0(16bit),color_1(16bit),index(32bit),然后以连续的方式将解压后的像素赋值到新内存,但这样做我失败了,后来多次查看资料,慢慢理解深刻,原来是以正方形的内存模型进行压缩,然后我尝试以正方形的内存模型进行解析压缩数据和解压数据,并将解压数据以正方形模型赋值到新内存,百思不得其解,依然是各种失败的滋味,继而各种查找资料,但网上的资料没有找到像在做我这种事情的人
大部分都是讨论的压缩算法和压缩的优势而没有压缩和解压的具体代码,各种尝试下也不记得那一刻怎么触发的想法
我尝试将压缩的数据以连续的64位进行解析,再将数据以正方形模型解压到新内存,这种方式我成功了

游戏进度:关于DirectX3D的压缩纹理格式DXT1/CB1相关推荐

  1. ETC1压缩纹理格式详解

    本来以为,ETC1作为Android 设备的OpenGL标准,开源且最常用的的一种压缩纹理格式,总会有人去翻译一下khronos的文档,读一下代码,给大家作个普及的,不料就是搜不到.没办法,尽管英文不 ...

  2. 游戏中纹理压缩格式之Texture压缩纹理

    记载目录 1.杂言杂语 2.纹理格式与文件格式的区别 3.常见的纹理格式和应用场合及硬件的特定要求常见的压缩纹理格式硬件需求 4.压缩纹理特殊处理RGBA16 + Dithering 处理ETC1的通 ...

  3. 各种移动GPU压缩纹理的使用方法

    介绍了各种移动设备所使用的GPU,以及各个GPU所支持的压缩纹理的格式和使用方法. 1. 移动GPU大全 目前移动市场的GPU主要有四大厂商系列: 1)Imagination Technologies ...

  4. 【百人计划】图形3.5 纹理压缩的格式

    笔记部分> 一.什么是纹理压缩格式(概念) 为了解决内存和带宽问题,在计算机图形渲染中(储存纹理)的一种图像压缩.优化技术. 二.为什么要进行纹理压缩? 对于低硬件设备和移动端,有两个问题需要解 ...

  5. 手机游戏开发中如何选择适合的纹理格式

    手机游戏开发中如何选择适合的纹理格式 为毛要写这个 本来觉得像这样的问题,是无法归类的,因为不同的项目有不同的需求,但今天因为quick论坛中的一个技术疑问贴,钩起了我整理这篇文章的兴趣 http:/ ...

  6. 手游中的文件格式和纹理格式

    手游中的文件格式和纹理格式 原文地址:http://78soft.com/article/7446.html 我们看到png.jpg.bmp 然后又看到RGBA-4444.RGBA-5551.RGB- ...

  7. Stage3D的压缩纹理- ATF工具介绍跟下载

    那么这是什么呢? 首先,让我们开始谈论压缩纹理. 在任何技术里GPU编程都是一样的,你有两个选择,你可以选用压缩或没压缩的纹理,那么,有什么区别呢? 当使用未压缩的纹理,将一个png 图形文件上传至G ...

  8. 3D游戏3D素材资源zip压缩解决方案

    3D游戏3D素材资源zip压缩解决方案 近期使用Laya开发了个3D游戏,遇到了这样的问题,3D素材资源加载很慢.前端工程师都知道,影响网络加载速度的因素除了下载文件体积之外还有一个就是http请求过 ...

  9. Unity3d 批量修改纹理格式

    决定纹理资源大小的因素主要有三种:分辨率.格式和Mipmap是否开启. 对于纹理资源的加载建议如下: 1.严格控制RGBA32和ARGB32纹理的使用,在保证视觉效果的前提下,尽可能采用"够 ...

最新文章

  1. 苏宁宣布二度涨薪!平均涨幅31%,最高涨幅高达150%!网友:羡慕哭了!苏宁员工:不是全员,跟社招无关!...
  2. python 导出数据并发邮件_Python自动化导出zabbix数据并发邮件脚本
  3. Lync Server 2010迁移至Lync Server 2013部署系列21:Lync 2013边缘第二台服务器配置
  4. iOS程序健壮性笔记
  5. c++ vector 实战(基本使用)
  6. 悠中选优,畅享马尔代夫与塞舌尔之旅
  7. Spring Data ElasticSearch入门案例
  8. The number of requested virtual cores per node 3 exceeds the maximum number of virtual cores 2
  9. POJ2774 Long Long Message
  10. C#编程语言(七):值类型与引用类型
  11. Vim/Vi常用操作(第二版)
  12. HDU 6446 Tree and Permutation(赛后补题)
  13. java中一个char_java 中一个char包含几个字节
  14. informix数据库启动/停止
  15. jqGrid资料总结
  16. 利用WinEdt修改图片格式为eps
  17. GXOI2019 题解
  18. 常见SOC启动流程分析
  19. 深入理解硬盘原理,Mysql索引底层数据结构与算法的来龙去脉(多图)
  20. 阅读和了解什么是形式化方法?

热门文章

  1. 数的变幻(魔术师的猜牌术(2))
  2. 1.Azure虚拟机部署
  3. html翻译系统,如何实现网页自动翻译成终端系统的文字?
  4. 怎样用计算机设置隐私空间,华为手机的三种隐私设置,开放的秘密空间,永远不用担心女友检查手机!...
  5. java swt课程设计_Java-SWT怎么做图片水印和文字水印?
  6. 【腾讯云】知识文档收集
  7. [系统安全] Windbg Preview调试记录
  8. 计算机组成flash小游戏,Flash大厅游戏推荐,数百款小游戏尽在其中 玩游戏尽在Flash大厅...
  9. 移民双N省,一定要清楚这些条件!
  10. 跨平台AR增强现实开发(一)(AR开发环境的搭建)