游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3854|回复: 4

关于DWORD赋值问题

[复制链接]

20

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2009-8-25 19:29:00 | 显示全部楼层 |阅读模式
大家好,想请教大家一个问题。我定义了一个类型DWORD用来存储顶点的DIFFUSE颜色,现在我想根据四个int来决定这个DWORD的值
比如
r=255 g=255 b=255 p=255
则DWORD=0xFFFFFFFF
r=127 g=15 b=255 p=0
则DWORD=0x880FFF00
不知道语句应该怎么写。
还有如何能通过 DWORD =0x880FFF00得到四个int的值?
谢谢大家,希望不吝赐教,谢谢

2

主题

7

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2009-8-27 08:34:00 | 显示全部楼层

Re:关于DWORD赋值问题

使用位移的方式来获得值
使用dword 类型需要增加头文件 #include <windef.h>

#include   <iostream>   
using   namespace   std;
#include <windef.h>

int main (){
     
     DWORD m=0;
     int r=255;
     int g=127;
     int b=63;
     int p=0;
     m=(r<<24)+(g<<16)+(b<<8)+p;
     int r1,g1,b1,p1;
     r1=(m>>24);
     g1=((m<<8)>>24);
     b1=((m<<16)>>24);
     p1=((m<<24)>>24);
     FILE * fout;
        fout=fopen("d:\\mytest\\fordx\\dwordtest.m2","wb");
                fwrite(&m,sizeof(DWORD),1,fout) ;
                fwrite(&r1,sizeof(int),1,fout) ;
                fwrite(&g1,sizeof(int),1,fout) ;
                fwrite(&b1,sizeof(int),1,fout) ;
                fwrite(&p1,sizeof(int),1,fout) ;
                fflush(fout);
        fclose(fout);
}

14

主题

251

帖子

251

积分

中级会员

Rank: 3Rank: 3

积分
251
发表于 2009-9-22 18:59:00 | 显示全部楼层

Re:关于DWORD赋值问题

        BYTE a[4];
        DWORD* DD;
        a[0]=0;  //为 p
        a[1]=255;//为 b
        a[2]=15; //为 g
        a[3]=127;//为 r
        DD=(DWORD*)a;

3

主题

101

帖子

101

积分

注册会员

Rank: 2

积分
101
发表于 2009-9-24 13:09:00 | 显示全部楼层

Re:关于DWORD赋值问题

我觉得LZ是需要这样的东西.
DWORD dwClr = RGB(r,g,b);
//这个本身就在wingdi.h中
或自己写个
#define MAKEDWORD(b0, b1, b2, b3) ...//参照MAKEWORD

0

主题

15

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2009-9-27 18:07:00 | 显示全部楼层

Re:关于DWORD赋值问题

定义位移,做在一个宏力就可以,很多东西的颜色系统都是这么做的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-20 12:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表