游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2458|回复: 3

DX9平面输出问题,以后大家可能遇到,来看看

[复制链接]

1

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-4-4 15:29:00 | 显示全部楼层 |阅读模式
有两个问题:
一,大家先看下面的代码,有些奇怪,是用来测试的。

VOID MyDGEApp::Render()
{
        if(!RenderSystem->BeginRender())
                ::MessageBox( NULL,"渲染初始化错误","错误",MB_OK );

        // Render the background
        // 注意:此处渲染的所有数据都来自于RT
        RT.m_pd3dDevice->SetTexture( 0 ,RT.m_pd3dTexture );
        RT.m_pd3dDevice->SetFVF( DGVertex::FVF );
        RT.m_pd3dDevice->SetStreamSource( 0, RT.m_pVB , 0, sizeof(DGVertex) );
        RT.m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );

        // 对RT本身进行渲染代码和上面理论上一样,下面也有给出
        // RT是一个DGRenderTextureDX9的对象
        RT.Render();

        RenderSystem->EndRender();

        return;
}

bool DGRenderTextureDX9::Render()
{
        m_pd3dDevice->SetTexture(0, m_pd3dTexture);
        m_pd3dDevice->SetFVF( DGVertex::FVF );       
        m_pd3dDevice->SetStreamSource( 0, m_pVB, 0, sizeof(DGVertex) );       
        m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 2 );
               
        return true;
}

上面两段代码理论上一样(一样的指针,一样的数据,一样的操作)
现在问题来了,同该屏蔽代码可知
RT.Render()这一步操作并没有在屏幕上绘制出图形,而
        RT.m_pd3dDevice->SetTexture( 0 ,RT.m_pd3dTexture );
        RT.m_pd3dDevice->SetFVF( DGVertex::FVF );
        RT.m_pd3dDevice->SetStreamSource( 0, RT.m_pVB , 0, sizeof(DGVertex) );
        RT.m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
这一段代码则按照意图绘制了出来。

有点匪夷所思,不过我需要说明的一点:DGRenderTextureDX9这个类我放到了静态库中(lib文件)。我想很有可能是这个关系。但是我一直认为lib应该和直接使用源文件一样。急需解决RT.Render()渲染无效的问题。

问题二,载入一个Texture的时候可以设置ColorKey,实验证明已经成功。
我在输出他的时候(用上面的方法)被ColorKey去掉的地方并不是变成透明,而是统统变成了黑颜色。(我用的是创建一个VB的方法)现在我想让他透明应该怎样做?

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-4-4 21:54:00 | 显示全部楼层

Re:DX9平面输出问题,以后大家可能遇到,来看看

问题一,与 lib 无关,我做的游戏引擎也是将渲染系统作为 lib 实现的,没有问题。最好再仔细查一查你的代码。
问题二,要设置 alpha 混合。

0

主题

30

帖子

39

积分

注册会员

Rank: 2

积分
39
发表于 2004-4-5 17:56:00 | 显示全部楼层

Re:DX9平面输出问题,以后大家可能遇到,来看看

问题二,打开Alpha混合功能.

1

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2004-4-7 13:58:00 | 显示全部楼层

Re:DX9平面输出问题,以后大家可能遇到,来看看

现在可以在明确一下啦。tga图片应用alpha混合可以剔出没有用的颜色。而bmp用colorkey剔出颜色以后开启alpha混合依然会出现黑框。等待解决,这个问题解决就给分啦~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-16 11:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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