1. iOS用的什么样的绘图方式,效率特别高?
2. 我用C#模拟,效率太低,太恶心了。现在改用MFC和GDI+来实现绘图、显示半透明图片、产生动画等一系列操作。
现在担心效果可能也不会太好,尤其实现动画时得用定时器,太耗CPU了,达不到iOS的效率。现在请大家给些建议,我应该用什么技术来实现这些效果,而且效率高。
Win32API?GDI+?DirectX?OpenGL?
我只是单纯进行平面绘图操作,高效率的。

解决方案 »

  1.   

    gdi和gdi+显示也不慢到哪里,主要是ms封装好了很多东西,你直接就可以用
    opengl的话,代码实现较多,主要是要你熟悉它的那套东西,包括坐标,纹理,还需要你会用辅助的一些库才能完成;
      

  2.   


    那我还是用GDI+吧。
    如果不用MFC改用win32是不是好得多?
      

  3.   

    GDI支持硬件加速,GDI+不支持。
    iOS上一般是OpenGL ES作告诉绘图。
    C#是解释语言,本身就比GDI+慢,所以要想高速绘图,应该用VC MFC(不用.NET托管)配合GDI,要更快,可以用Direct3D8以上或OpenGL。Vista/7的显示驱动模型已经抛弃Direct2D,无法和Aero共存,所以不要再用它。
      

  4.   

    GDI就搞定了,也就是直接用Win32API,我在WinCE下都这么搞的.Windows的性能就不用说了.
      

  5.   


    openGL es能在windows下开发吗?
    你的意思是GDI要比GDI+性能高?
      

  6.   

    现在用GDI,速度还可以,进行双缓冲处理的动画绘制虽然不闪屏,但还是会变慢
      

  7.   

    GDI或DirectX两者选其一:
    两种我都用过,DirectX的效率在窗口模式下感觉不比GDI快,而全屏模式比窗口模式几乎快一个数量级,所以如果不是全屏的应用还是GDI吧
      

  8.   

    推荐DirectX和OpenGL,会比GDI麻烦,但效率很高
    其实关键还是看你的绘图算法是否高效
      

  9.   

    你每秒要显示多少帧,我以前用GDI显示每秒25帧视频都没问题
      

  10.   

    gdi要自己处理透明。
    gdi+ 不用。
    dx支持的动画多,也方便。但开源的例子少。如果你很牛可以自己钻研。但其实很不幸的是D3D下的2D贴图需要花费比较大的功夫(如果你没有现成的解决办法)去保证图片不失真。gdi,gdi+ 占用的是cpu.但代码即使写的一般,在极限操作情况下(例如腾讯比较早以前的directui,群列表滚动条猛地拖拉),搞得不好也只是cpu100%而已。后来人家现在不也解决了吗
    DX占用的是gpu 需要显卡支持。如果你老板对于每台XP机器,或者说你可以解释说我放弃掉不支持DX的机器。那么没问题。(比较囧的一点是,我工作的这台垃圾戴尔就是不支持DX。。任何一个DX程序都初始化失败。)至于巨慢的.net,就不吐槽了。没有指针访问能力的话,gdi+ getpixel 怎么跟getbit比
    wpf底下也是dx实现的。为了推它的平台,都不开发c++版本,实际上c++更高效,快速。
    搞得我们都要重复构造轮子。。如果只想简单快速,gdi+ + MFC满足你的要求。
    如果想要更近一步,gdi+ SDK 可以省去你那个MFC的DLL。也可以抛弃庞大的框架。
    如果想一劳永逸,DX+SDK 才是你最终的选择。也是目前所有界面库的终极解决方案。
      

  11.   

    LS:目前界面库没directx的把,directx做出来也不可能就那点效果
      

  12.   

    汇报一下进度:
    用MFC + GDI + GDI+混用 主体已经实现的差不多了,主要用的是CImage::Draw(),速度挺快,但是Draw的多了(用在双缓冲时要把好几张png Draw到一张以便合成)就变慢了。
      

  13.   

    如果觉得png慢,就用bmp,如果又想要alpha通道,就用32位带alpha通道的bmp,如果要alpha混合,可以先Premultiplied Alpha。更快。
      

  14.   


    带alpha通道的bmp为什么速度更快呢?原理?