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的效果了

  • 相关阅读:
    9.17考试
    Something
    tesuto-Mobius
    7.22考试
    填坑...P1546 最短网络 Agri-Net
    P1125 笨小猴
    P2822 组合数问题
    致我们曾经刷过的水题
    Luogu P1186 玛丽卡
    Luogu P1726 上白泽慧音
  • 原文地址:https://www.cnblogs.com/leihui/p/8922975.html
Copyright © 2011-2022 走看看