| @@ -19,6 +19,10 @@ | |||
| # define FAR | |||
| # define NEAR | |||
| # include <d3d9.h> | |||
| #elif defined _XBOX | |||
| # include <xtl.h> | |||
| # undef near /* Fuck Microsoft */ | |||
| # undef far /* Fuck Microsoft again */ | |||
| #endif | |||
| using namespace std; | |||
| @@ -44,7 +48,7 @@ class FramebufferData | |||
| IDirect3DTexture9 *m_texture; | |||
| IDirect3DSurface9 *m_surface, *m_back_surface; | |||
| #elif defined _XBOX | |||
| D3DDevice9 *m_dev; | |||
| D3DDevice *m_dev; | |||
| D3DTexture *m_texture; | |||
| D3DSurface *m_surface, *m_back_surface; | |||
| #else | |||
| @@ -61,7 +65,7 @@ uint32_t FramebufferFormat::GetFormat() | |||
| { | |||
| switch (m_format) | |||
| { | |||
| #if defined USE_D3D9 || defined _XBOX | |||
| #if defined USE_D3D9 | |||
| case R_16_F: return D3DFMT_R16F; | |||
| case R_32_F: return D3DFMT_R32F; | |||
| case RG_16: | |||
| @@ -80,6 +84,25 @@ uint32_t FramebufferFormat::GetFormat() | |||
| case RGBA_16_UI: return D3DFMT_A16B16G16R16; | |||
| case RGBA_16_F: return D3DFMT_A16B16G16R16F; | |||
| case RGBA_32_F: return D3DFMT_A32B32G32R32F; | |||
| #elif defined _XBOX | |||
| case R_16_F: return D3DFMT_R16F; | |||
| case R_32_F: return D3DFMT_R32F; | |||
| case RG_16: | |||
| case RG_16_I: | |||
| case RG_16_UI: return D3DFMT_G16R16; | |||
| case RG_16_F: return D3DFMT_G16R16F; | |||
| case RG_32_F: return D3DFMT_G32R32F; | |||
| case RGB_8: | |||
| case RGB_8_I: | |||
| case RGB_8_UI: return D3DFMT_X8R8G8B8; | |||
| case RGBA_8: | |||
| case RGBA_8_I: | |||
| case RGBA_8_UI: return D3DFMT_A8R8G8B8; | |||
| case RGBA_16: | |||
| case RGBA_16_I: | |||
| case RGBA_16_UI: return D3DFMT_A16B16G16R16; | |||
| case RGBA_16_F: return D3DFMT_A16B16G16R16F; | |||
| case RGBA_32_F: return D3DFMT_A32B32G32R32F; | |||
| #elif defined __CELLOS_LV2__ | |||
| /* Supported drawable formats on the PS3: GL_ARGB_SCE, GL_RGB16F_ARB, | |||
| * GL_RGBA16F_ARB, GL_RGB32F_ARB, GL_RGBA32F_ARB, GL_LUMINANCE32F_ARB. */ | |||
| @@ -291,23 +314,25 @@ Framebuffer::Framebuffer(ivec2 size, FramebufferFormat fbo_format) | |||
| m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
| if (FAILED(m_data->m_dev->CreateTexture(size.x, size.y, 1, | |||
| D3DUSAGE_RENDERTARGET, | |||
| (D3DFORMAT)fbo_format.GetFormat(), D3DPOOL_DEFAULT, | |||
| &m_data->m_texture, nullptr))) | |||
| D3DUSAGE_RENDERTARGET, | |||
| (D3DFORMAT)fbo_format.GetFormat(), | |||
| D3DPOOL_DEFAULT, | |||
| &m_data->m_texture, nullptr))) | |||
| Abort(); | |||
| if (FAILED(m_data->m_texture->GetSurfaceLevel(0, &m_data->m_surface))) | |||
| Abort(); | |||
| #elif defined _XBOX | |||
| m_data->m_dev = (D3DDevice9 *)g_renderer->GetDevice(); | |||
| m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
| if (FAILED(m_data->m_dev->CreateTexture(size.x, size.y, 1, 0, | |||
| fbo_format.GetFormat(), D3DPOOL_DEFAULT, | |||
| &m_data->m_texture, nullptr))) | |||
| (D3DFORMAT)fbo_format.GetFormat(), | |||
| D3DPOOL_DEFAULT, | |||
| &m_data->m_texture, nullptr))) | |||
| Abort(); | |||
| if (FAILED(m_data->m_dev->CreateRenderTarget(size.x, size.y, | |||
| fbo_format.GetFormat(), | |||
| D3DMULTISAMPLE_NONE, 0, 0, | |||
| &m_data->m_surface, nullptr))) | |||
| (D3DFORMAT)fbo_format.GetFormat(), | |||
| D3DMULTISAMPLE_NONE, 0, 0, | |||
| &m_data->m_surface, nullptr))) | |||
| Abort(); | |||
| #else | |||
| # if GL_VERSION_1_1 | |||
| @@ -19,6 +19,10 @@ | |||
| # define FAR | |||
| # define NEAR | |||
| # include <d3d9.h> | |||
| #elif defined _XBOX | |||
| # include <xtl.h> | |||
| # undef near /* Fuck Microsoft */ | |||
| # undef far /* Fuck Microsoft again */ | |||
| #endif | |||
| using namespace std; | |||
| @@ -41,7 +45,7 @@ class IndexBufferData | |||
| IDirect3DDevice9 *m_dev; | |||
| IDirect3DIndexBuffer9 *m_ibo; | |||
| #elif defined _XBOX | |||
| D3DDevice9 *m_dev; | |||
| D3DDevice *m_dev; | |||
| D3DIndexBuffer *m_ibo; | |||
| #else | |||
| GLuint m_ibo; | |||
| @@ -64,7 +68,7 @@ IndexBuffer::IndexBuffer(size_t size) | |||
| # if defined USE_D3D9 | |||
| m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
| # elif defined _XBOX | |||
| m_data->m_dev = (D3DDevice9 *)g_renderer->GetDevice(); | |||
| m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
| # endif | |||
| if (FAILED(m_data->m_dev->CreateIndexBuffer(size, D3DUSAGE_WRITEONLY, | |||
| @@ -97,7 +97,7 @@ Renderer::Renderer(ivec2 size) | |||
| XVIDEO_MODE VideoMode; | |||
| XGetVideoMode(&VideoMode); | |||
| size = lol::min(size, ivec2(VideoMode.dwDisplayWidth, | |||
| VideoMode.dwDisplayHeight); | |||
| VideoMode.dwDisplayHeight)); | |||
| # endif | |||
| D3DPRESENT_PARAMETERS d3dpp; | |||
| memset(&d3dpp, 0, sizeof(d3dpp)); | |||
| @@ -15,7 +15,7 @@ | |||
| #include <cstring> | |||
| #include <cstdio> | |||
| #ifdef WIN32 | |||
| #if defined WIN32 && !defined _XBOX | |||
| # define WIN32_LEAN_AND_MEAN | |||
| # include <windows.h> | |||
| # if defined USE_D3D9 | |||
| @@ -25,6 +25,10 @@ | |||
| # include <d3d9.h> | |||
| # include <d3dx9shader.h> | |||
| # endif | |||
| #elif defined _XBOX | |||
| # include <xtl.h> | |||
| # undef near /* Fuck Microsoft */ | |||
| # undef far /* Fuck Microsoft again */ | |||
| #endif | |||
| #include "core.h" | |||
| @@ -50,7 +54,7 @@ private: | |||
| IDirect3DPixelShader9 *frag_shader; | |||
| ID3DXConstantTable *vert_table, *frag_table; | |||
| #elif defined _XBOX | |||
| D3DDevice9 *m_dev; | |||
| D3DDevice *m_dev; | |||
| D3DVertexShader *vert_shader; | |||
| D3DPixelShader *frag_shader; | |||
| ID3DXConstantTable *vert_table, *frag_table; | |||
| @@ -192,7 +196,7 @@ Shader::Shader(char const *vert, char const *frag) | |||
| # if defined USE_D3D9 | |||
| data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
| # elif defined _XBOX | |||
| data->m_dev = (D3DDevice9 *)g_renderer->GetDevice(); | |||
| data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
| # endif | |||
| hr = D3DXCompileShader(vert, (UINT)strlen(vert), macros, nullptr, "main", | |||
| @@ -45,8 +45,11 @@ class TextureData | |||
| D3DTEXTUREFILTERTYPE m_min_filter; | |||
| D3DTEXTUREFILTERTYPE m_mip_filter; | |||
| #elif defined _XBOX | |||
| D3DDevice9 *m_dev; | |||
| D3DDevice *m_dev; | |||
| D3DTexture *m_texture; | |||
| D3DTEXTUREFILTERTYPE m_mag_filter; | |||
| D3DTEXTUREFILTERTYPE m_min_filter; | |||
| D3DTEXTUREFILTERTYPE m_mip_filter; | |||
| #else | |||
| GLuint m_texture; | |||
| GLint m_internal_format; | |||
| @@ -74,7 +77,7 @@ Texture::Texture(ivec2 size, PixelFormat format) | |||
| # if defined USE_D3D9 | |||
| m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
| # elif defined _XBOX | |||
| m_data->m_dev = (D3DDevice9 *)g_renderer->GetDevice(); | |||
| m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
| # endif | |||
| static struct | |||
| @@ -297,8 +300,10 @@ void Texture::SetMinFiltering(TextureMinFilter filter) | |||
| void Texture::GenerateMipmaps() | |||
| { | |||
| #if defined _XBOX || defined USE_D3D9 | |||
| m_data->m_texture->GenerateMipSubLevels(); | |||
| #if defined USE_D3D9 | |||
| m_data->m_texture->->GenerateMipSubLevels(); | |||
| #elif defined _XBOX | |||
| /* FIXME: No direct mipmap generation support on X360 */ | |||
| #elif defined __CELLOS_LV2__ | |||
| glBindTexture(GL_TEXTURE_2D, m_data->m_texture); | |||
| glGenerateMipmapOES(GL_TEXTURE_2D); | |||
| @@ -19,6 +19,10 @@ | |||
| # define FAR | |||
| # define NEAR | |||
| # include <d3d9.h> | |||
| #elif defined _XBOX | |||
| # include <xtl.h> | |||
| # undef near /* Fuck Microsoft */ | |||
| # undef far /* Fuck Microsoft again */ | |||
| #endif | |||
| using namespace std; | |||
| @@ -42,7 +46,7 @@ class VertexBufferData | |||
| IDirect3DDevice9 *m_dev; | |||
| IDirect3DVertexBuffer9 *m_vbo; | |||
| #elif defined _XBOX | |||
| D3DDevice9 *m_dev; | |||
| D3DDevice *m_dev; | |||
| D3DVertexBuffer *m_vbo; | |||
| #else | |||
| GLuint m_vbo; | |||
| @@ -64,7 +68,7 @@ class VertexDeclarationData | |||
| IDirect3DDevice9 *m_dev; | |||
| IDirect3DVertexDeclaration9 *m_vdecl; | |||
| #elif defined _XBOX | |||
| D3DDevice9 *m_dev; | |||
| D3DDevice *m_dev; | |||
| D3DVertexDeclaration *m_vdecl; | |||
| #else | |||
| #endif | |||
| @@ -564,7 +568,7 @@ void VertexDeclaration::Initialize() | |||
| # if defined USE_D3D9 | |||
| m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
| # elif defined _XBOX | |||
| m_data->m_dev = (D3DDevice9 *)g_renderer->GetDevice(); | |||
| m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
| # endif | |||
| if (FAILED(m_data->m_dev->CreateVertexDeclaration(elements, | |||
| @@ -647,7 +651,7 @@ VertexBuffer::VertexBuffer(size_t size) | |||
| # if defined USE_D3D9 | |||
| m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
| # elif defined _XBOX | |||
| m_data->m_dev = (D3DDevice9 *)g_renderer->GetDevice(); | |||
| m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
| # endif | |||
| if (FAILED(m_data->m_dev->CreateVertexBuffer(size, D3DUSAGE_WRITEONLY, nullptr, | |||
| @@ -63,7 +63,7 @@ void XboxApp::Tick() | |||
| Ticker::TickDraw(); | |||
| #if defined _XBOX | |||
| D3DDevice9 *d3d_dev = (D3DDevice9 *)g_renderer->GetDevice(); | |||
| D3DDevice *d3d_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
| d3d_dev->Present(nullptr, nullptr, nullptr, nullptr); | |||
| #endif | |||
| } | |||