//"main.cpp"
#include "mainwindow.h"
#include "iD3D9.h"
#include <QtGui/QApplication>
int main(int argc, char *argv[])
{
iD3D9 widget;
window.setCentralWidget(&widget);
widget.InitD3D();
window.show();
return a.exec();
//"iD3D9.h"
#include <QWidget>
{
Q_OBJECT
public:
iD3D9
(QWidget *parent
= 0, Qt
::WFlags flags
= 0);
~iD3D9();
void InitD3D();
bool PaintD3D();
private:
};
//"iD3D9.cpp"
"#include "iD3D9.h"
#include <d3d9.h>
//Globals//
LPDIRECT3D9 g_pD3D = NULL; // Used to create the D3DDevice
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; // Our rendering device
iD3D9::iD3D9(QWidget *parent, Qt::WFlags flags) //
: QWidget(parent, flags)
{
setFixedSize(200, 200);
setAttribute(Qt::WA_MSWindowsUseDirect3D, true);
setAttribute(Qt::WA_NoSystemBackground, true);
}
iD3D9::~iD3D9() //
{
}
void iD3D9::InitD3D()
{
g_pD3D = Direct3DCreate9( D3D_SDK_VERSION); //Standard
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, winId(), // DXREF Hardware Vertex GPU
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice );
};
void iD3D9::paintEvent(QPaintEvent *paintE) // We made our own paintEvent
{
PaintD3D();
}
bool iD3D9::PaintD3D()
{
if(g_pd3dDevice == 0)
return false;
g_pd3dDevice->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);
if(SUCCEEDED(g_pd3dDevice->BeginScene()))
{
g_pd3dDevice->EndScene();
}
g_pd3dDevice->Present( 0, 0, 0, 0 );
return true;
}
//"main.cpp"
#include "mainwindow.h"
#include "iD3D9.h"
#include <QtGui/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow window;
iD3D9 widget;
window.setCentralWidget(&widget);
widget.InitD3D();
window.show();
return a.exec();
//"iD3D9.h"
#include <QWidget>
class iD3D9 : public QWidget
{
Q_OBJECT
public:
iD3D9(QWidget *parent = 0, Qt::WFlags flags = 0);
~iD3D9();
void InitD3D();
bool PaintD3D();
private:
void paintEvent(QPaintEvent *paintE);
};
//"iD3D9.cpp"
"#include "iD3D9.h"
#include <d3d9.h>
//Globals//
LPDIRECT3D9 g_pD3D = NULL; // Used to create the D3DDevice
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; // Our rendering device
iD3D9::iD3D9(QWidget *parent, Qt::WFlags flags) //
: QWidget(parent, flags)
{
setFixedSize(200, 200);
setAttribute(Qt::WA_MSWindowsUseDirect3D, true);
setAttribute(Qt::WA_NoSystemBackground, true);
}
iD3D9::~iD3D9() //
{
}
void iD3D9::InitD3D()
{
g_pD3D = Direct3DCreate9( D3D_SDK_VERSION); //Standard
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, winId(), // DXREF Hardware Vertex GPU
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice );
};
void iD3D9::paintEvent(QPaintEvent *paintE) // We made our own paintEvent
{
PaintD3D();
}
bool iD3D9::PaintD3D()
{
if(g_pd3dDevice == 0)
return false;
g_pd3dDevice->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);
if(SUCCEEDED(g_pd3dDevice->BeginScene()))
{
g_pd3dDevice->EndScene();
}
g_pd3dDevice->Present( 0, 0, 0, 0 );
return true;
}
To copy to clipboard, switch view to plain text mode
Bookmarks