Shader.cpp
#include "wasdShader.h"
#include <D3DX11.h>
#include <string>
#include "Declarations.h"
#include <iostream>
using namespace wasd;
wasdShader::wasdShader(wasdDevice* device)
{
ID3D10Blob *VS, *PS;
D3DX11CompileFromFile(L"shaders.hlsl", 0, 0, "VShader", "vs_5_0", 0, 0, 0, &VS, 0, 0);
D3DX11CompileFromFile(L"shaders.hlsl", 0, 0, "PShader", "ps_5_0", 0, 0, 0, &PS, 0, 0);
if(!VS | !PS)
{
MessageBox(NULL, L"Fehlende Shaderdatei.\nshader.hlsl Datei muss in \\wasdEngine\\testGame\\ liegen", L"Error", MB_OK | MB_ICONERROR);
exit(0);
}
// encapsulate both shaders into shader objects
device->createVertexAndPixelShader(&(*VS), &(*PS), &(*pVS), &(*pPS));
VS->Release();
PS->Release();
std::cout<<"Initialisierung des wasdShaders erfolgreich"<<std::endl;
}
wasdShader::~wasdShader()
{
pPS->Release();
pVS->Release();
}
wasdEngine.cpp
#include "..\shared\wasdEngine.h"
#include <string>
#include <stdio.h>
#include "Declarations.h"
#include <iostream>
using namespace wasd;
wasdEngine::wasdEngine(int width, int height, bool fullscreen, char* title)
{
wasdEngine::width = width;
wasdEngine::height = height;
//SDL initialisieren
SDL_Init(SDL_INIT_VIDEO);
//Erzeugung der SDL_Surface
if(fullscreen)
{
screen = SDL_SetVideoMode(width, height, 32, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);
}
else
{
screen = SDL_SetVideoMode(width, height, 32,SDL_HWSURFACE | SDL_DOUBLEBUF);
}
if(!screen)
{
MessageBox(NULL, L"Erstellung der SDLSurface fehlgeschlagen", L"Error", MB_ICONERROR | MB_OK);
exit(0);
}
else
{
std::cout<<"Initialisierung der SDLSurface erfolgreich\n";
}
SDL_WM_SetCaption(title, title);
SDL_SysWMinfo wminfo;
SDL_VERSION(&wminfo.version);
SDL_GetWMInfo(&wminfo);
hWnd = wminfo.window;
//wasdDevice erzeugen
device = new wasdDevice(hWnd, fullscreen, width, height);
if(!device)
{
MessageBox(NULL, L"Erstellung des wasdDevices fehlgeschlagen", L"Error", MB_ICONERROR | MB_OK);
exit(0);
}
//Shader erzeugen
shader = new wasdShader(&(*device));
if(!shader)
{
MessageBox(NULL, L"Erstellung des wasdShaders fehlgeschlagen", L"Error", MB_ICONERROR | MB_OK);
exit(0);
}
}
wasdEngine::~wasdEngine()
{
delete shader;
delete device;
/*if(models.size() != 0)
{
for(int i = 0; i < models.size(); i++)
{
models->~wasdModel();
}
}
for(int i = 0; i< objects.size(); i++)
{
objects[i]
}*/
SDL_FreeSurface(screen);
SDL_Quit();
}
HWND wasdEngine::getHWND()
{
return hWnd;
}
int wasdEngine::getWidth()
{
return width;
}
int wasdEngine::getHeight()
{
return height;
}
void wasdEngine::doRenderLoop()
{
SDL_Event event;
bool running = true;
while(running)
{
device->RenderFrame();
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT: running = false; break;
}
}
}
}
Kann keine Code tags benuztzen sonst formatiert er es komisch