C
#define WINDOW_CLASS_NAME "Game Shell Window"
#define WIN32_LEAN_AND_MEAN
#define SCR_WIDTH 640
#define SCR_HEIGHT 480
#include <windows.h>
#include <d3dx9.h>
#include <dinput.h>
#define W 1680
#define H 1050
#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
#define D3D_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)
LPDIRECTINPUT8 lpDI;
LPDIRECTINPUTDEVICE8 lpDIKeyboard = NULL;
float m_angle;
float VerX = 0.0f;
float VerY = 0.0f;
float VerZ = 0.0f;
float RotX = 0.0f;
float RotY = 0.0f;
float RotZ = 0.0f;
D3DXMATRIX m_worldMat,m_viewMat,mProjectionMat;
D3DXVECTOR3 m_eyeVec,m_lookVec,m_upVec;
D3DXMATRIX ViewMatrix;
LPDIRECT3DTEXTURE9 lpTexture;
#define Texture "C:/users/michael/bilder/untitled.bmp"
struct CustomVertex
{
float x,y,z;
DWORD color;
float tu,tv;
};
CustomVertex Tria[]=
{
{-1.0f,0.0f,0.0f,D3DCOLOR_XRGB(0,0,255),0.0f,1.0f},
{0.0f,2.0f,0.0f,D3DCOLOR_XRGB(0,0,255),0.0f,0.5f},
{1.0f,0.0f,0.0f,D3DCOLOR_XRGB(0,0,255),1.0f,1.0f},
};
void Init_3D();
void Render();
void Init_Scene();
void End_All();
LPDIRECT3D9 D3DGE = NULL;
LPDIRECT3DDEVICE9 D3DGR = NULL;
LPDIRECT3DVERTEXBUFFER9 rew = NULL;
LPDIRECT3DVERTEXBUFFER9 rew2 = NULL;
D3DLIGHT9 Light;
HWND main_window_handle = NULL;
HINSTANCE hinstance_app = NULL;
HRESULT hr;
LRESULT CALLBACK WindowProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
{
PAINTSTRUCT ps;
HDC hdc;
switch(msg)
{
case WM_CREATE:
{
return(0);
}
break;
case WM_PAINT:
{
hdc = BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps);
return(0);
}
break;
case WM_DESTROY:
{
PostQuitMessage(0);
return(0);
}
break;
default:
break;
}
return (DefWindowProc(hwnd, msg, wparam, lparam));
}
int WINAPI WinMain( HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR lpcmdline,int ncmdshow)
{
//windows Fenster
if (!RegisterClassEx(&winclass))
return(0);
if (!(hwnd = CreateWindowEx(NULL,WINDOW_CLASS_NAME,"My Game Shell",WS_POPUP | WS_VISIBLE,0,0,1680,1050,NULL,NULL,hinstance,NULL)))
return(0);
main_window_handle = hwnd;
Init_3D();
Init_Scene();
while(TRUE)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
if(KEYDOWN(VK_ESCAPE))
{
SendMessage(main_window_handle,WM_CLOSE,0,0);
}
}
Render();
}
End_All();
return(msg.wParam);
}
void Init_3D()
{
//Init_3DFUNKtion
}
void Render()
{
D3DXMATRIX Trans;
D3DXMATRIX Rotation;
D3DXMATRIX TundR;
D3DXMatrixLookAtLH(&ViewMatrix,
&D3DXVECTOR3( 0.0f, 0.0f,-10.0f ),
&D3DXVECTOR3( 0.0f, 0.0f, 0.0f ),
&D3DXVECTOR3( 0.0f, 1.0f, 0.0f ));
D3DGR->SetStreamSource(0,rew,0,sizeof(CustomVertex));
D3DGR->SetTexture(0,lpTexture);
D3DGR->DrawPrimitive(D3DPT_TRIANGLELIST,0,12);
D3DGR->SetRenderState(D3DRS_ZENABLE,true);
D3DGR->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);
D3DGR->EndScene();
D3DGR->Present(NULL,NULL,NULL,NULL);
}
void Init_Scene()
{
D3DXCreateTextureFromFile(D3DGR,Texture,&lpTexture);
D3DGR->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);
D3DGR->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
void* VertexBufferStart;
if(FAILED(D3DGR->CreateVertexBuffer(3*sizeof(Tria),D3DUSAGE_WRITEONLY,D3D_CUSTOMVERTEX,D3DPOOL_MANAGED,&rew,NULL)))
SendMessage(main_window_handle,WM_CLOSE,0,0);
if(FAILED(rew->Lock(0,0,&VertexBufferStart,0)))
SendMessage(main_window_handle,WM_CLOSE,0,0);
memcpy(VertexBufferStart,Tria,sizeof(Tria));
rew->Unlock();
D3DGR->SetFVF(D3D_CUSTOMVERTEX);
}
void End_All()
{
}