|
|
|
#pragma comment(lib, "user32") |
|
#pragma comment(lib, "d3d11") |
|
#pragma comment(lib, "d3dcompiler") |
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
#include <windows.h> |
|
#include <d3d11.h> |
|
#include <d3dcompiler.h> |
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) |
|
{ |
|
WNDCLASSA wndClass = { 0, DefWindowProcA, 0, 0, 0, 0, 0, 0, 0, "d7" }; |
|
|
|
RegisterClassA(&wndClass); |
|
|
|
HWND window = CreateWindowExA(0, "d7", 0, 0x91000000, 0, 0, 0, 0, 0, 0, 0, 0); |
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
D3D_FEATURE_LEVEL featureLevels[] = { D3D_FEATURE_LEVEL_11_0 }; |
|
|
|
DXGI_SWAP_CHAIN_DESC swapChainDesc = { { 0, 0, {}, DXGI_FORMAT_B8G8R8A8_UNORM }, { 1 }, 32, 2, window, 1 }; |
|
|
|
IDXGISwapChain* swapChain; |
|
|
|
ID3D11Device* device; |
|
ID3D11DeviceContext* deviceContext; |
|
|
|
D3D11CreateDeviceAndSwapChain(0, D3D_DRIVER_TYPE_HARDWARE, 0, D3D11_CREATE_DEVICE_BGRA_SUPPORT, featureLevels, 1, 7, &swapChainDesc, &swapChain, &device, 0, &deviceContext); |
|
|
|
swapChain->GetDesc(&swapChainDesc); |
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
ID3D11Texture2D* renderTarget; |
|
|
|
swapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (void**)&renderTarget); |
|
|
|
ID3D11RenderTargetView* renderTargetView; |
|
|
|
device->CreateRenderTargetView(renderTarget, 0, &renderTargetView); |
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
ID3DBlob* cso; |
|
|
|
D3DCompileFromFile(L"shaders.hlsl", 0, 0, "vs", "vs_5_0", 0, 0, &cso, 0); |
|
|
|
ID3D11VertexShader* vertexShader; |
|
|
|
device->CreateVertexShader(cso->GetBufferPointer(), cso->GetBufferSize(), 0, &vertexShader); |
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
D3DCompileFromFile(L"shaders.hlsl", 0, 0, "ps", "ps_5_0", 0, 0, &cso, 0); |
|
|
|
ID3D11PixelShader* pixelShader; |
|
|
|
device->CreatePixelShader(cso->GetBufferPointer(), cso->GetBufferSize(), 0, &pixelShader); |
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
D3D11_VIEWPORT viewport = { 0, 0, (float)swapChainDesc.BufferDesc.Width, (float)swapChainDesc.BufferDesc.Height, 0, 1 }; |
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
deviceContext->VSSetShader(vertexShader, 0, 0); |
|
deviceContext->RSSetViewports(1, &viewport); |
|
deviceContext->PSSetShader(pixelShader, 0, 0); |
|
deviceContext->OMSetRenderTargets(1, &renderTargetView, 0); |
|
|
|
deviceContext->Draw(3, 0); |
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
swapChain->Present(1, 0); |
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
MSG msg; |
|
|
|
GetMessageA(&msg, 0, WM_KEYFIRST, WM_KEYLAST); |
|
} |