游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2348|回复: 7

绘制星空颜色不正常

[复制链接]

3

主题

23

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2006-5-22 19:40:00 | 显示全部楼层 |阅读模式
星空是用点模拟星星,用点的运动来模拟飞船的运动。
单独渲染星空时,没有问题,是设置的白色。
当和别的物体一起渲染时就会跟最近那个物体纹理的颜色一样。
比如 Render3D()里最后渲染的是一个贴着黄色纹理的正方体,星星也就变成黄色的了。

不知道这是什么问题?  哪位高手告诉一下,谢谢了:)

我用directx8.

星星结构:
#define STAR_D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE)          // 星星顶点格式,坐标和颜色

struct STAR_CUSTOMVERTEX
{
        float x, y, z;   // 坐标
        DWORD color;     // 颜色
};                                                                      //  星星顶点结构

下面是渲染函数:
    //Setup the camera ready for 3D elements
    Setup3DCamera();

    //Now that the 3D camera is setup, render the 3D objects
    Render3D();

    // 移动星空
    MoveStarfield();

    // 渲染星空
    Render_Starfield();

    //Setup the camera ready for 2D elements
    Setup2DCamera();

    //Now that the 2D camera is setup, render the 2D objects
    Render2D();

说明:
    Setup3DCamera()里开启了灯光, Render_Starfield()时关闭了灯光, Setup2DCamera()也关闭了灯光。

渲染星空函数:
// 渲染星空
void CGame::Render_Starfield()
{
        // 关闭z缓冲
        pDev->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);

        // 关闭灯光,这样才能看见我们的星空
        pDev->SetRenderState(D3DRS_LIGHTING, FALSE);

        // 设置world矩阵.
        D3DXMATRIX matIdentity;
                D3DXMatrixIdentity(&matIdentity);
        pDev->SetTransform(D3DTS_WORLD, &matIdentity);

        //Set stream source and vertex shader.
        pDev->SetStreamSource(0, pVB, sizeof(STAR_CUSTOMVERTEX));
        pDev->SetVertexShader(STAR_D3DFVF_CUSTOMVERTEX);

        //Render.
        pDev->DrawPrimitive(D3DPT_POINTLIST, 0, NUM_STARS);
}       

显示如下:

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
发表于 2006-5-22 20:56:00 | 显示全部楼层

Re:绘制星空颜色不正常

是不是少了类似这样的一行?
  1. g_pd3ddev9->SetFVF( FVF );
复制代码

3

主题

23

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2006-5-22 22:09:00 | 显示全部楼层

Re:绘制星空颜色不正常

我用的directx8。
渲染函数设置在上面,我添加上去了。

3

主题

23

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2006-5-23 15:47:00 | 显示全部楼层

Re:绘制星空颜色不正常

顶一下  请问谁知道    这个问题出很久了

3

主题

23

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2006-5-23 15:49:00 | 显示全部楼层

Re:绘制星空颜色不正常

顶一下  请问谁知道    这个问题出很久了

3

主题

23

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2006-5-23 19:16:00 | 显示全部楼层

Re:绘制星空颜色不正常

谢谢大家了
问题解决了
只要在渲染星空那里加上SetTexture(0, NULL)就行了
虽然我在顶点坐标里没加纹理,但是不知道为什么d3d还是自动加上了,只要设置纹理为空就可以了:)

7

主题

299

帖子

305

积分

中级会员

Rank: 3Rank: 3

积分
305
发表于 2006-5-24 00:09:00 | 显示全部楼层

Re:绘制星空颜色不正常

原来点图原也可以有文理哦

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-5-24 11:03:00 | 显示全部楼层

Re:绘制星空颜色不正常

FVF里面没加纹理不代表纹理坐标就没有,只有渲染参数才能控制纹理是否参与混合,没有纹理坐标的话管线中的纹理坐标会全部是默认值,Texture又没有禁用掉,所以还是会根据这个纹理坐标去寻址,结果整个星星上就是一种颜色
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 14:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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