1. ckTex中的接口误区:getImage()
歧义:获取纹理的像素(只有像素值)数据区域地址
实际:获取纹理的所有数据(包含图片信息)首地址。
2. ckTex在资源加载、物件渲染时获取png图片的内容不一致。
a. 资源加载时,获取的ckTex是整个图片信息(图片格式信息、头信息、数据信息以及一些其他描述)。
b. 物件渲染时,实际能用上的也只有图片的像素信息。
3. 通过png.h中提供的接口获取png的像素信息。catcake中所有的png图片info、image信息的获取都是通过ck_low_level_util_lib文件中的readPNG接口获取信息。
a. ckUtils::readPNGInfo、ckUtils::readPNGImage这两个函数的实现部分都调用了ck_low_level_util_lib::readPNG,只是提供的参数不同,计算的内容也不同。只要有提供buf值,就能够获取到PNG图片的像素值。只是ckTex没有保存像素值。
b. 解决方案:在ckTex中提供getPixels(),第一次调用getPixels()时获取png像素值,之后就沿用第一次获取到的像素值。也可以添加限制,能够强制重新获取像素值。
c. 解析png像素值的过程,可从ckTex::expandAndRegisterTexture_png()中抽取出。
d. 注意事项:切勿直接修改ck_low_level_util_lib::readPNG,虽然能够提供实现,但是尽量避免修改底层。