我对图象处理方面了解很少,虽然会VC,但没写过多少程序!数学基础不好,难啊!
前途未卜!!!说不定什么时候被炒了。
那位高手给点建议我就给分,绝对不会吝啬。不够再加。
前途未卜!!!说不定什么时候被炒了。
那位高手给点建议我就给分,绝对不会吝啬。不够再加。
解决方案 »
- 巨菜的问题。。。我用的VC2008,怎么调出图形界面
- mfc ActiveX控件注册问题 急求助!!!
- 想着共享内存中放STL map能不能实现?
- 请教几行代码。为何在for()循环中定义的变量,出了for循环后,这个变量依然是“可见的”,理论上是可见的吗?
- 编译时提示‘You are not using the latest Platform SDK header/library ’
- vc,ado,access这样为什么打不开数据库?
- 今天修改一个很早以前的程序,在工具栏中加入一个按钮,并设置了tooltip,发现tooltip出不来了?
- 如何处理多语言?
- 关于picture控件上图标拉长的问题
- 带假财神白板的麻将,吃牌分析
- 发现一个问题:就是对于CStatic类的窗口,SetWindowRgn不起作用,请高手进来解释一下(在线)
- 请问怎么将CTypedPtrMap排序?
为什么要实时转换颜色深度?
通常, 2D 游戏中的位图, 无论在外存中按什么颜色深度存放, 加栽后都被转换成了需要的颜色深度. 我们不太注意颜色深度转换说需要的时间. 但是, 现在不同了. 云风未来的计划中, 最重要的一项是制作一个超级 2D 引擎. 将支持 Voxel 物体和实时光线处理这样的特性, 而且在光线处理中, 32 级的光线亮度级别也远远不够, 所以, 未来的 2D 游戏的发展趋势应该是采用真彩色, 至少是在内部运算时使用. 在某些场合下, 我们可能需要做 15/16bit 高彩色的输出, 所以有必要找到更快的方法实时处理. 下面, 我们对此做一些探讨, 虽然显卡可以支持 15 或 16 bit 色中的一种, 但这里全部用 16bit 色举例: 先来看看 C 版本: red=(truecolor>>8)&0xf800;green=(truecolor>>5)&0x7e0;blue=(truecolor>>3)&0x1f;hicolor=red|green|blue;这样当然是相当慢的, 所以我们还是要借助汇编. 而汇编能极大的优化它: lodsd ;RRRRRRRR GGGGGGGG BBBBBBBBshr eax,3 ;000RRRRR RRRGGGGG GGGBBBBBshl al,2 ;000RRRRR RRRGGGGG GBBBBBxxshl ax,3 ;000RRRRR GGGGGGBBB BBxxxxxdec esishr eax,5 ;00000000 RRRRRGGG GGGBBBBBstosw是不是精简了很多? 但不幸的是, 虽然看起来很简洁, 但由于大量使用部分寄存器, 对流水线的冲击很大. 代码几乎把流水线的效率减到了最低. 优化方案很多, 我们可以在一次循环里处理两个点, 分别使用 eax 和 ebx, 然后交错那些代码; 又或者将上面代码的后半部分改为查表, 相信都能提高速度. 但是下面我还想提出另一种方案, 采用 MMX 指令级: mm7=F800F800F800F800mm6=FC00FC00FC00FC00------------------------------punpcklbw mm0,[red+edx];mm0=RRRRRRRR 00000000 RRRRRRRR 00000000 RRRRRRRR 00000000 RRRRRRRR 00000000punpcklbw mm1,[green+edx];mm1=GGGGGGGG 00000000 GGGGGGGG 00000000 GGGGGGGG 00000000 GGGGGGGG 00000000punpcklbw mm2,[blue+edx];mm2=BBBBBBBB 00000000 BBBBBBBB 00000000 BBBBBBBB 00000000 BBBBBBBB 00000000pand mm0,mm7;mm0=RRRRR000 00000000 RRRRR000 00000000 RRRRR000 00000000 RRRRR000 00000000pand mm1,mm6;mm1=GGGGGG00 00000000 GGGGGG00 00000000 GGGGGG00 00000000 GGGGGG00 00000000psrlw mm2,11;mm2=00000000 000BBBBB 00000000 000BBBBB 00000000 000BBBBB 00000000 000BBBBBpsrlw mm1,5;mm1=00000GGG GGG00000 00000GGG GGG00000 00000GGG GGG00000 00000GGG GGG00000por mm0,mm2por mm0,mm1;mm0=RRRRRGGG GGGBBBBB RRRRRGGG GGGBBBBB RRRRRGGG GGGBBBBB RRRRRGGG GGGBBBBBmovq [dis+edx*2],mm0add edx,4我们对 MMX 的运用是针对它的并行运算, 直接从 RGB888 格式利用并行处理变成 RGB565 似乎不可能, 但是, 如果我们将 RGB 三个色素分开存放, 就将其变为了可能. 可以同时读入 4 个色素, 并行处理, 然后合并, 这样便在一个循环内处理了 4 个点. 考虑到 CACHE 的效率, 最好不要将 RGB 三块内存分的太开. 我的建议是, 位图的每一行分成三个部分, 即为 Red 段, Green 段 和 Blue 段. 上面的方法都是可以继续优化的, 本文旨在启发朋友们的灵感, 找出更好的方法.
http://pay500.com/s/s34468.htm
网上很多的
两星很厉害,前辈啊!
我要做的是图形压缩,具体什么东西,怎么做我还一点不知道,头痛。
不知道做图象处理前途如何?待遇如何?如果很不错,我就决心往这方面发展了。