zoukankan      html  css  js  c++  java
  • 初学Direct X(6)

    初学Direct X(6)


    这一文本应和上一篇放在一起的,但是上一章写着写着发现对Draw绘制透明位图的方式有感觉了,决定就单写一篇,留作笔记了。

    那这一篇是记录如何使用位图表来绘制动画帧,想象一下,利用图1制作出来的图2
    图1
    图1
    图2
    图2

    其实实现的方式不难,回忆一下在Draw函数中,有一个参数为pSrcRect,它可以在我们需要时取出在pTexture中指定的一部分,或者称之为图片单元,或者帧。根据可以取出指定部分的思路,只要计算出来下一帧的位图在pTexture中的坐标即可,帧数为framenum,每行中图片单元数量为columns,由(framenum % columns) * framew可以得到x坐标,由 (framenum / columns) * frameh可以得到y坐标

    根据需要,获取指定的帧数是很必要的:

    void Sprite_Draw_Frame(LPDIRECT3DTEXTURE9 texture, int destx, int desty, int framenum, int framew, int frameh, int columns)
    {
    	D3DXVECTOR3 position((float)destx, (float)desty, 0);
    	D3DCOLOR white = D3DCOLOR_XRGB(255, 255, 255);
    
    	RECT rect;
    	rect.left = (framenum % columns) * framew;
    	rect.top = (framenum / columns) * frameh;
    	rect.right = rect.left + framew;
    	rect.bottom = rect.top + frameh;
    
    	spriteobj->Draw(texture, &rect, NULL, &position, white);
    }
    
    

    最后将其整和在代码中就是图1的效果了

  • 相关阅读:
    contextMenu,右键菜单
    hashchange
    web攻击日志分析之新手指南
    工匠人生
    数学有卵用之通信篇
    精英主义(一)
    flaskbb部署笔记
    深入分析一波,你们说的云安全到底是什么鬼?
    Gh0st与云安全
    困境与突破
  • 原文地址:https://www.cnblogs.com/leihui/p/8922975.html
Copyright © 2011-2022 走看看