Суббота, 23 Ноября 2024, 01:38

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Потеря устройства вместе с мешами.
AlexsSyrДата: Четверг, 05 Ноября 2015, 14:18 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Сворачиваю программу ALT + TAB. Открываю снова и меши исчезают.

Код начала сцены.
Код
void D3DstartRendering(){

  if(Device->TestCooperativeLevel() == D3DERR_DEVICENOTRESET && Device != NULL)  //Востанавливаем устройство при потере
   Device->Reset(&Param);

  if (Device != NULL) {
   Device->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
    ClearColor, 1.0f, 0);
   // Начало сцены, здесь происходит прорисовка сцены
   Device->BeginScene();
  }
    }


Код

Класс для работы с мешами.
#include "stdafx.h"
#include "Xmesh.h"

using namespace System;
using namespace System::Runtime::InteropServices;

namespace GearX {

    Mesh MyMesh;
    LPDIRECT3DDEVICE9 device;

    Xmesh::Xmesh(String^ filename)
    {
  l_FileName = filename;
    }

    void Xmesh::Xload(D3D^ d3d) {
  D3DXLoadMeshFromXA((char*)Marshal::StringToHGlobalAnsi(l_FileName).ToPointer(), D3DXMESH_SYSTEMMEM,
   *d3d->D3DgetDevice(), NULL, &MyMesh.pMeshBuffer, NULL,
   &MyMesh.dwNumber, &MyMesh.pMesh);

  // Мы должны извлечь материальные свойства и названия{имена} структуры от
  // pD3DXMtrlBuffer
  D3DXMATERIAL* D3DXMeshMaterials = (D3DXMATERIAL *)MyMesh.pMeshBuffer->GetBufferPointer();
  MyMesh.pMeshMaterials = new D3DMATERIAL9[MyMesh.dwNumber];
  MyMesh.pMeshTextura = new LPDIRECT3DTEXTURE9[MyMesh.dwNumber];
  for (DWORD i = 0; i<MyMesh.dwNumber; i++)
  {
   // Копируем материал
   MyMesh.pMeshMaterials[i] = D3DXMeshMaterials[i].MatD3D;
   // Установить окружающего свет
   MyMesh.pMeshMaterials[i].Ambient = MyMesh.pMeshMaterials[i].Diffuse;
   // Загружаем текстуру
   if (FAILED(D3DXCreateTextureFromFileA(*d3d->D3DgetDevice(),
    D3DXMeshMaterials[i].pTextureFilename,
    &MyMesh.pMeshTextura[i])))
    MyMesh.pMeshTextura[i] = NULL;
  }
  // Уничтожаем материальный буфер
  MyMesh.pMeshBuffer->Release();

  device = *d3d->D3DgetDevice();

    }

    void Xmesh::Xdraw()
    {
  for (DWORD i = 0; i<MyMesh.dwNumber; i++)
  {
   // Устанавливаем материал и текстуру
   device->SetMaterial(&MyMesh.pMeshMaterials[i]);
   device->SetTexture(0, MyMesh.pMeshTextura[i]);
   // Рисуем Меш
   MyMesh.pMesh->DrawSubset(i);
  }
    }
}


В чём причина ?


Сообщение отредактировал AlexsSyr - Четверг, 05 Ноября 2015, 14:19
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг