⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 context.cpp

📁 用于GPU通用计算的编程语言BrookGPU 0.4
💻 CPP
字号:
// context.cpp#pragma once#include "core.hpp"#include "context.hpp"using namespace fibble;Context* Context::create( Window* inWindow ){  Context* result = new Context( inWindow );  if( result->initialize() )    return result;  delete result;  return NULL;}Context::Context( Window* inWindow )  : window( inWindow ){}Context::~Context(){}bool Context::initialize(){  HWND windowHandle = window->getWindowHandle();	direct3d = Direct3DCreate9( D3D_SDK_VERSION );  if( direct3d == NULL )  {    DX9Warn("Could not create Direct3D interface.");    return false;  }	D3DPRESENT_PARAMETERS deviceDesc;	ZeroMemory( &deviceDesc, sizeof(deviceDesc) );	deviceDesc.Windowed = TRUE;	deviceDesc.SwapEffect = D3DSWAPEFFECT_DISCARD;	deviceDesc.BackBufferFormat = D3DFMT_UNKNOWN;	deviceDesc.EnableAutoDepthStencil = FALSE;	deviceDesc.AutoDepthStencilFormat = D3DFMT_D24S8;	HRESULT result = direct3d->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, windowHandle,		D3DCREATE_HARDWARE_VERTEXPROCESSING, &deviceDesc, &device );  if( FAILED(result) )  {    DX9Warn("Could not create Direct3D device.");    return false;  }	// TIM: set up initial state	result = device->SetRenderState( D3DRS_ZENABLE, D3DZB_FALSE );  DX9AssertResult( result, "SetRenderState failed" );  return true;}void Context::clear(){  HRESULT result = device->Clear( 0, NULL,    D3DCLEAR_TARGET,//    D3DCLEAR_STENCIL | D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,    0x00000000, 1.0f, 0 );  DX9AssertResult( result, "Clear Failed" );}void Context::swap(){  HRESULT result = device->Present( NULL, NULL, NULL, NULL );  DX9AssertResult( result, "Present Failed" );}bool Context::beginScene(){  HRESULT result = device->BeginScene();  DX9AssertResult( result, "BeginScene Failed" );  return true;}void Context::endScene(){  HRESULT result = device->EndScene();  DX9AssertResult( result, "Present Failed" );}VertexShader* Context::createVertexShader( const std::string& inSource ){  return new VertexShader( this, inSource );}PixelShader* Context::createPixelShader( const std::string& inSource ){  return new PixelShader( this, inSource );}void Context::setVertexShader( VertexShader* inShader ){  IDirect3DVertexShader9* shader = inShader->getShaderHandle();  HRESULT result = device->SetVertexShader( shader );  if( FAILED(result) ) throw -1;}void Context::setPixelShader( PixelShader* inShader ){  IDirect3DPixelShader9* shader = inShader->getShaderHandle();  HRESULT result = device->SetPixelShader( shader );  if( FAILED(result) ) throw -1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -