【发布时间】:2021-06-30 14:45:22
【问题描述】:
我正在制作一个纹理立方体贴图,图像在所有 6 个面上输出。如何在 6 面上打印分割图像?我想在不使用着色器的情况下制作它,我想知道一个我可以学习 directX 的网站 有没有可以推荐的网站?
这是我的代码。 ㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁ
struct CUBEVERTEX
{
float x, y, z;
float tu, tv;
};
void SkyBox::onInit(float scale)
{
CUBEVERTEX vertice[] =
{
{-1.0f, 1.0f, -1.0f, 0.0f, 0.0f },
{ 1.0f, 1.0f, -1.0f, 1.0f, 0.0f },
{ 1.0f, -1.0f, -1.0f, 1.0f, 1.0f },
{ 1.0f, -1.0f, -1.0f, 1.0f, 1.0f },
{-1.0f, -1.0f, -1.0f, 0.0f, 1.0f },
{-1.0f, 1.0f, -1.0f, 0.0f, 0.0f },
{ 1.0f, 1.0f, 1.0f, 0.0f, 0.0f },
{-1.0f, 1.0f, 1.0f, 1.0f, 0.0f },
{-1.0f, -1.0f, 1.0f, 1.0f, 1.0f },
{-1.0f, -1.0f, 1.0f, 1.0f, 1.0f },
{ 1.0f, -1.0f, 1.0f, 0.0f, 1.0f },
{ 1.0f, 1.0f, 1.0f, 0.0f, 0.0f },
{-1.0f, -1.0f, -1.0f, 0.0f, 0.0f },
{ 1.0f, -1.0f, -1.0f, 1.0f, 0.0f },
{ 1.0f, -1.0f, 1.0f, 1.0f, 1.0f },
{ 1.0f, -1.0f, 1.0f, 1.0f, 1.0f },
{-1.0f, -1.0f, 1.0f, 0.0f, 1.0f },
{-1.0f, -1.0f, -1.0f, 0.0f, 0.0f },
{-1.0f, 1.0f, 1.0f, 0.0f, 0.0f },
{ 1.0f, 1.0f, 1.0f, 1.0f, 0.0f },
{ 1.0f, 1.0f, -1.0f, 1.0f, 1.0f },
{ 1.0f, 1.0f, -1.0f, 1.0f, 1.0f },
{-1.0f, 1.0f, -1.0f, 0.0f, 1.0f },
{-1.0f, 1.0f, 1.0f, 0.0f, 0.0f },
{-1.0f, 1.0f, 1.0f, 0.0f, 0.0f },
{-1.0f, 1.0f, -1.0f, 1.0f, 0.0f },
{-1.0f, -1.0f, -1.0f, 1.0f, 1.0f },
{-1.0f, -1.0f, -1.0f, 1.0f, 1.0f },
{-1.0f, -1.0f, 1.0f, 0.0f, 1.0f },
{-1.0f, 1.0f, 1.0f, 0.0f, 0.0f },
{ 1.0f, 1.0f, -1.0f, 0.0f, 0.0f },
{ 1.0f, 1.0f, 1.0f, 1.0f, 0.0f },
{ 1.0f, -1.0f, 1.0f, 1.0f, 1.0f },
{ 1.0f, -1.0f, 1.0f, 1.0f, 1.0f },
{ 1.0f, -1.0f, -1.0f, 0.0f, 1.0f },
{ 1.0f, 1.0f, -1.0f, 0.0f, 0.0f }
};
m_pd3dDevice->CreateVertexBuffer(sizeof(vertice), 0, D3DFVF_CUBEVERTEX, D3DPOOL_DEFAULT,
&m_pVB, 0);
void* pVertice;
m_pVB->Lock(0, sizeof(vertice), &pVertice, 0);
memcpy(pVertice, vertice, sizeof(vertice));
m_pVB->Unlock();
}
void SkyBox::render()
{
D3DXMATRIX matWorld;
D3DXMatrixIdentity(&matWorld);
m_pd3dDevice->SetTransform(D3DTS_WORLD, &matWorld);
m_pd3dDevice->SetTexture(0, texture);
m_pd3dDevice->SetStreamSource(0, m_pVB, 0, sizeof(CUBEVERTEX));
m_pd3dDevice->SetFVF(D3DFVF_CUBEVERTEX);
m_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 12);
}
【问题讨论】: