游戏开发论坛

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

非2的次方尺寸的??D?理

[复制链接]

414

主题

611

帖子

621

积分

高级会员

Rank: 4

积分
621
发表于 2006-4-11 16:48:00 | 显示全部楼层 |阅读模式
非2的次方尺寸的??D?理

我有一??"非2的次方尺寸的?D?n"(286x203)
我依???叽缳N到?窗上,???D像???模糊.
???一下要如何才可以?"非2的次方尺寸的?D?n"到?面上而不失真
我想到的方法是做一??大的??D,再?X取其中一小部份

BOOL DoInit()
{
  D3DPRESENT_PARAMETERS d3dpp;
  D3DDISPLAYMODE        d3ddm;
  BYTE *Ptr;

#define PNG_WIDTH 286.0f
#define PNG_HEIGHT 203.0f

  sVertex Verts[4] = {
      {  0.0f,  0.0f, 1.0f, 1.0f, 0.0f, 0.0f },
      { PNG_WIDTH,  0.0f, 1.0f, 1.0f, 1.0f, 0.0f },
      {  00.0f, PNG_HEIGHT, 1.0f, 1.0f, 0.0f, 1.0f },
      { PNG_WIDTH, PNG_HEIGHT, 1.0f, 1.0f, 1.0f, 1.0f }
    };

  // Do a windowed mode initialization of Direct3D
  if((g_pD3D = Direct3DCreate8(D3D_SDK_VERSION)) == NULL)
    return FALSE;
  if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm)))
    return FALSE;
  ZeroMemory(&d3dpp, sizeof(d3dpp));
  d3dpp.Windowed = TRUE;
  d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
  d3dpp.BackBufferFormat = d3ddm.Format;
  d3dpp.EnableAutoDepthStencil = FALSE;
  if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, g_hWnd,
                                  D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                  &d3dpp, &g_pD3DDevice)))
    return FALSE;

  // Create the vertex buffer and set data
  g_pD3DDevice->CreateVertexBuffer(sizeof(sVertex)*4, 0,                                VERTEXFVF, D3DPOOL_DEFAULT, &g_pVB);
  g_pVB->Lock(0,0, (BYTE**)&amptr, 0);
  memcpy(Ptr, Verts, sizeof(Verts));
  g_pVB->Unlock();

  // Load the texture map
  D3DXCreateTextureFromFile(g_pD3DDevice, "LoginBG.png", &g_pTexture);

  return TRUE;
}

7

主题

299

帖子

305

积分

中级会员

Rank: 3Rank: 3

积分
305
发表于 2006-4-11 22:14:00 | 显示全部楼层

Re:非2的次方尺寸的??D?理

286x203这个尺寸directX肯定会把纹理转换成标准一点的尺寸,转换过程用了线性过滤就会变得模糊

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2006-4-12 00:01:00 | 显示全部楼层

Re:非2的次方尺寸的??D?理

鉴于兼容性,还是采用2^N的纹理,要不自己先用PS处理一下再使用。

7

主题

67

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2006-4-12 21:17:00 | 显示全部楼层

Re:非2的次方尺寸的??D?理

我的方式是,在程序里动态把图片切割成小于256×256的小纹理。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 04:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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