游戏开发论坛

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

请教一个PixelShader的硬件问题

[复制链接]

9

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2007-3-28 17:30:00 | 显示全部楼层 |阅读模式
我在调用IDirect3DDevice9:CreatePixelShader这个方法建立一个IDirect3DPixelShader9接口,但是它失败了,开始我认为是硬件不支持。所以我检查了D3DCAPS9 中PixelShaderVersion的值,它是可以支持ps_2_0以上。
在调用CreatePixelShader函数前,调用的D3DXCompileShaderFromFile是成功的,没有报错。

请问我的程序哪里有问题呢?CreatePixelShader有那些原因能导致失败呢?

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2007-3-29 15:09:00 | 显示全部楼层

Re:请教一个PixelShader的硬件问题

请报显卡型号
并贴出部分示例代码

3

主题

24

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2007-3-30 09:10:00 | 显示全部楼层

Re: 请教一个PixelShader的硬件问题

估计是你的第一个参数"pFunction"填的不合适吧. 参考这段代码试试:


//shader constant tables
ID3DXConstantTable* postProcessPSConstTable;
IDirect3DPixelShader9* postProcessPS;
//load & compile shaders
ID3DXBuffer* shader;
ID3DXBuffer* errors;
       



hr = D3DXCompileShaderFromFile(&quotostProcessPixelShader.hlsl",0,0,"main","ps_2_0",
                D3DXSHADER_DEBUG,&shader,&errors,&postProcessPSConstTable);

        if(errors) {
                ::MessageBox(0, (char*)errors->GetBufferPointer(), 0, 0);
                SAFE_RELEASE(errors);
        }
        if(FAILED(hr)) {
                ::MessageBox(0, "CompilePostProcessPS() - FAILED", 0, 0);
                return E_FAIL;
        }

        if(FAILED(device->CreatePixelShader((DWORD *)shader->GetBufferPointer(),&postProcessPS))) {
                ::MessageBox(0, "CreatePostProcessPS() - FAILED", 0, 0);
                return E_FAIL;
        }

9

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
 楼主| 发表于 2007-4-5 16:08:00 | 显示全部楼层

Re:请教一个PixelShader的硬件问题

谢谢,但是不行呀。我和你调用的方式是一样的。可能时硬件不支持吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-4-12 15:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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