游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3959|回复: 10

我画了一个球,在球上帖图,但是帖上去的图有点不对

[复制链接]

7

主题

30

帖子

46

积分

注册会员

Rank: 2

积分
46
QQ
发表于 2004-7-26 16:17:00 | 显示全部楼层 |阅读模式
        //画球体咯
        LPDIRECT3DVERTEXBUFFER8 pTempVertexBuffer;
        LPD3DXMESH pTempSunMesh   = NULL;
        D3DXCreateSphere(g_pd3dDevice, 1.0f, 20, 20, &pTempSunMesh, NULL);

    pTempSunMesh->CloneMeshFVF( 0, D3DFVF_CUSTOMVERTEX, g_pd3dDevice, &g_pSunMesh );   
    if( SUCCEEDED( g_pSunMesh->GetVertexBuffer( &pTempVertexBuffer ) ) )
    {
        int nNumVerts = g_pSunMesh->GetNumVertices();
        CUSTOMVERTEX *pVertices = NULL;

        pTempVertexBuffer->Lock( 0, 0, (BYTE**)&pVertices, 0 );
        {
            for( int i = 0; i < nNumVerts; ++i )
                        {
                pVertices.color = D3DCOLOR_COLORVALUE( 1.0, 1.0, 0.0, 1.0 );
                                                                pVertices.tu=(float)(i%20)/(float)(20);//我认为是这里帖图坐标不太正确,但也不知道怎么修改,或许不是这里的错
                pVertices.tv=(float)(i/20)/(float)(20);
                        }
        }
        pTempVertexBuffer->Unlock();

        pTempVertexBuffer->Release();
    }
    pTempSunMesh->Release();

7

主题

30

帖子

46

积分

注册会员

Rank: 2

积分
46
QQ
 楼主| 发表于 2004-7-26 16:18:00 | 显示全部楼层

Re: 我画了一个球,在球上帖图,但是帖上去的图有点不对

源纹理图
sf_2004726161816.bmp

7

主题

30

帖子

46

积分

注册会员

Rank: 2

积分
46
QQ
 楼主| 发表于 2004-7-26 16:18:00 | 显示全部楼层

Re: 我画了一个球,在球上帖图,但是帖上去的图有点不对

错误1
sf_2004726161847.bmp

7

主题

30

帖子

46

积分

注册会员

Rank: 2

积分
46
QQ
 楼主| 发表于 2004-7-26 16:19:00 | 显示全部楼层

Re: 我画了一个球,在球上帖图,但是帖上去的图有点不对

错误2
sf_2004726161912.bmp

7

主题

30

帖子

46

积分

注册会员

Rank: 2

积分
46
QQ
 楼主| 发表于 2004-7-26 16:25:00 | 显示全部楼层

Re: 我画了一个球,在球上帖图,但是帖上去的图有点不对

完整工程代码.希望大家帮我看看。我初学D3D不久。不过我是一定要学好它的
工程环境:VC7,DX9。

sf_2004726162533.rar

41.53 KB, 下载次数:

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2004-7-26 16:36:00 | 显示全部楼层

Re:我画了一个球,在球上帖图,但是帖上去的图有点不对

有内存泄漏!

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2004-7-26 16:44:00 | 显示全部楼层

Re:我画了一个球,在球上帖图,但是帖上去的图有点不对

Total Memory Unfreed From Current Process = 452507 bytes
Detected memory leaks!
Dumping objects ->
{73} normal block at 0x003D5E30, 3040 bytes long.
Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{72} normal block at 0x003D5D80, 112 bytes long.
Data: <H M R           > 48 07 4D 00 52 01 00 00 00 00 00 00 04 00 00 00
Object dump complete.
程序“[3076] D3d.exe: 本机”已退出,返回值为 2 (0x2)。

7

主题

30

帖子

46

积分

注册会员

Rank: 2

积分
46
QQ
 楼主| 发表于 2004-7-27 09:07:00 | 显示全部楼层

Re:我画了一个球,在球上帖图,但是帖上去的图有点不对

内存泄漏先不管。
我帖出来的代码,和画球的错误有关吗?

7

主题

30

帖子

46

积分

注册会员

Rank: 2

积分
46
QQ
 楼主| 发表于 2004-7-27 10:13:00 | 显示全部楼层

Re:我画了一个球,在球上帖图,但是帖上去的图有点不对

在参考资料后,找到了计算帖图坐标的算法,代码如下:
                        for( int i = 0; i < nNumVerts; ++i )
                        {
                                pVertices.color = D3DCOLOR_COLORVALUE( 1.0, 1.0, 0.0, 1.0 );
                                pVertices.tu=asinf(pVertices.normal.x)/D3DX_PI+0.5f;
                                pVertices.tv=asinf(pVertices.normal.y)/D3DX_PI+0.5f;
                        }

但是我又发现了新的问题,我画出来的球怎么不圆呢??看别人画出来的球是很圆的啊,又是哪里弄错了呢???

7

主题

30

帖子

46

积分

注册会员

Rank: 2

积分
46
QQ
 楼主| 发表于 2004-7-27 15:08:00 | 显示全部楼层

Re:我画了一个球,在球上帖图,但是帖上去的图有点不对

球体不圆的原因已找到,主要是下面这个函数的第三个参数是一个纵横比,最好设成和分辨率的纵横比一样(这是我的理解,若不对还请高手指正)。
D3DXMatrixPerspectiveFovLH( &matProj, 45.0f, 640.0f / 480.0f, 1.0f, 100.0f );

最后上面有个朋友说这程序有内存泄漏,但是我检查怎么没有发现?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-4 05:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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