Index: command_buffer/service/win/d3d9/gapi_d3d9.h |
=================================================================== |
--- command_buffer/service/win/d3d9/gapi_d3d9.h (revision 27642) |
+++ command_buffer/service/win/d3d9/gapi_d3d9.h (working copy) |
@@ -1,406 +1,406 @@ |
-/* |
- * Copyright 2009, Google Inc. |
- * All rights reserved. |
- * |
- * Redistribution and use in source and binary forms, with or without |
- * modification, are permitted provided that the following conditions are |
- * met: |
- * |
- * * Redistributions of source code must retain the above copyright |
- * notice, this list of conditions and the following disclaimer. |
- * * Redistributions in binary form must reproduce the above |
- * copyright notice, this list of conditions and the following disclaimer |
- * in the documentation and/or other materials provided with the |
- * distribution. |
- * * Neither the name of Google Inc. nor the names of its |
- * contributors may be used to endorse or promote products derived from |
- * this software without specific prior written permission. |
- * |
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- */ |
- |
- |
-// This file contains the GAPID3D9 class, implementing the GAPI interface for |
-// D3D9. |
- |
-#ifndef O3D_COMMAND_BUFFER_SERVICE_WIN_D3D9_GAPI_D3D9_H_ |
-#define O3D_COMMAND_BUFFER_SERVICE_WIN_D3D9_GAPI_D3D9_H_ |
- |
-#include "command_buffer/common/cross/gapi_interface.h" |
-#include "command_buffer/service/win/d3d9/d3d9_utils.h" |
-#include "command_buffer/service/win/d3d9/geometry_d3d9.h" |
-#include "command_buffer/service/win/d3d9/effect_d3d9.h" |
-#include "command_buffer/service/win/d3d9/texture_d3d9.h" |
-#include "command_buffer/service/win/d3d9/sampler_d3d9.h" |
-#include "command_buffer/service/win/d3d9/render_surface_d3d9.h" |
- |
-namespace o3d { |
-namespace command_buffer { |
- |
-// This class implements the GAPI interface for D3D9. |
-class GAPID3D9 : public GAPIInterface { |
- public: |
- GAPID3D9(); |
- virtual ~GAPID3D9(); |
- |
- void set_hwnd(HWND hwnd) { hwnd_ = hwnd; } |
- HWND hwnd() const { return hwnd_; } |
- |
- // Initializes the graphics context, bound to a window. |
- // Returns: |
- // true if successful. |
- virtual bool Initialize(); |
- |
- // Destroys the graphics context. |
- virtual void Destroy(); |
- |
- // Implements the BeginFrame function for D3D9. |
- virtual void BeginFrame(); |
- |
- // Implements the EndFrame function for D3D9. |
- virtual void EndFrame(); |
- |
- // Implements the Clear function for D3D9. |
- virtual void Clear(unsigned int buffers, |
- const RGBA &color, |
- float depth, |
- unsigned int stencil); |
- |
- // Implements the SetViewport function for D3D9. |
- virtual void SetViewport(unsigned int x, |
- unsigned int y, |
- unsigned int width, |
- unsigned int height, |
- float z_min, |
- float z_max); |
- |
- // Implements the CreateVertexBuffer function for D3D9. |
- virtual ParseError CreateVertexBuffer(ResourceId id, |
- unsigned int size, |
- unsigned int flags); |
- |
- // Implements the DestroyVertexBuffer function for D3D9. |
- virtual ParseError DestroyVertexBuffer(ResourceId id); |
- |
- // Implements the SetVertexBufferData function for D3D9. |
- virtual ParseError SetVertexBufferData(ResourceId id, |
- unsigned int offset, |
- unsigned int size, |
- const void *data); |
- |
- // Implements the GetVertexBufferData function for D3D9. |
- virtual ParseError GetVertexBufferData(ResourceId id, |
- unsigned int offset, |
- unsigned int size, |
- void *data); |
- |
- // Implements the CreateIndexBuffer function for D3D9. |
- virtual ParseError CreateIndexBuffer(ResourceId id, |
- unsigned int size, |
- unsigned int flags); |
- |
- // Implements the DestroyIndexBuffer function for D3D9. |
- virtual ParseError DestroyIndexBuffer(ResourceId id); |
- |
- // Implements the SetIndexBufferData function for D3D9. |
- virtual ParseError SetIndexBufferData(ResourceId id, |
- unsigned int offset, |
- unsigned int size, |
- const void *data); |
- |
- // Implements the GetIndexBufferData function for D3D9. |
- virtual ParseError GetIndexBufferData(ResourceId id, |
- unsigned int offset, |
- unsigned int size, |
- void *data); |
- |
- // Implements the CreateVertexStruct function for D3D9. |
- virtual ParseError CreateVertexStruct(ResourceId id, |
- unsigned int input_count); |
- |
- // Implements the DestroyVertexStruct function for D3D9. |
- virtual ParseError DestroyVertexStruct(ResourceId id); |
- |
- // Implements the SetVertexInput function for D3D9. |
- virtual ParseError SetVertexInput(ResourceId vertex_struct_id, |
- unsigned int input_index, |
- ResourceId vertex_buffer_id, |
- unsigned int offset, |
- unsigned int stride, |
- vertex_struct::Type type, |
- vertex_struct::Semantic semantic, |
- unsigned int semantic_index); |
- |
- // Implements the SetVertexStruct function for D3D9. |
- virtual ParseError SetVertexStruct(ResourceId id); |
- |
- // Implements the Draw function for D3D9. |
- virtual ParseError Draw(PrimitiveType primitive_type, |
- unsigned int first, |
- unsigned int count); |
- |
- // Implements the DrawIndexed function for D3D9. |
- virtual ParseError DrawIndexed(PrimitiveType primitive_type, |
- ResourceId index_buffer_id, |
- unsigned int first, |
- unsigned int count, |
- unsigned int min_index, |
- unsigned int max_index); |
- |
- // Implements the CreateEffect function for D3D9. |
- virtual ParseError CreateEffect(ResourceId id, |
- unsigned int size, |
- const void *data); |
- |
- // Implements the DestroyEffect function for D3D9. |
- virtual ParseError DestroyEffect(ResourceId id); |
- |
- // Implements the SetEffect function for D3D9. |
- virtual ParseError SetEffect(ResourceId id); |
- |
- // Implements the GetParamCount function for D3D9. |
- virtual ParseError GetParamCount(ResourceId id, |
- unsigned int size, |
- void *data); |
- |
- // Implements the CreateParam function for D3D9. |
- virtual ParseError CreateParam(ResourceId param_id, |
- ResourceId effect_id, |
- unsigned int index); |
- |
- // Implements the CreateParamByName function for D3D9. |
- virtual ParseError CreateParamByName(ResourceId param_id, |
- ResourceId effect_id, |
- unsigned int size, |
- const void *name); |
- |
- // Implements the DestroyParam function for D3D9. |
- virtual ParseError DestroyParam(ResourceId id); |
- |
- // Implements the SetParamData function for D3D9. |
- virtual ParseError SetParamData(ResourceId id, |
- unsigned int size, |
- const void *data); |
- |
- // Implements the GetParamDesc function for D3D9. |
- virtual ParseError GetParamDesc(ResourceId id, |
- unsigned int size, |
- void *data); |
- |
- // Implements the GetStreamCount function for D3D9. |
- virtual ParseError GetStreamCount(ResourceId id, |
- unsigned int size, |
- void *data); |
- |
- // Implements the GetStreamDesc function for D3D9. |
- virtual ParseError GetStreamDesc(ResourceId id, |
- unsigned int index, |
- unsigned int size, |
- void *data); |
- |
- // Implements the CreateTexture2D function for D3D9. |
- virtual ParseError CreateTexture2D(ResourceId id, |
- unsigned int width, |
- unsigned int height, |
- unsigned int levels, |
- texture::Format format, |
- unsigned int flags, |
- bool enable_render_surfaces); |
- |
- // Implements the CreateTexture3D function for D3D9. |
- virtual ParseError CreateTexture3D(ResourceId id, |
- unsigned int width, |
- unsigned int height, |
- unsigned int depth, |
- unsigned int levels, |
- texture::Format format, |
- unsigned int flags, |
- bool enable_render_surfaces); |
- |
- // Implements the CreateTextureCube function for D3D9. |
- virtual ParseError CreateTextureCube(ResourceId id, |
- unsigned int side, |
- unsigned int levels, |
- texture::Format format, |
- unsigned int flags, |
- bool enable_render_surfaces); |
- |
- // Implements the SetTextureData function for D3D9. |
- virtual ParseError SetTextureData(ResourceId id, |
- unsigned int x, |
- unsigned int y, |
- unsigned int z, |
- unsigned int width, |
- unsigned int height, |
- unsigned int depth, |
- unsigned int level, |
- texture::Face face, |
- unsigned int pitch, |
- unsigned int slice_pitch, |
- unsigned int size, |
- const void *data); |
- |
- // Implements the GetTextureData function for D3D9. |
- virtual ParseError GetTextureData(ResourceId id, |
- unsigned int x, |
- unsigned int y, |
- unsigned int z, |
- unsigned int width, |
- unsigned int height, |
- unsigned int depth, |
- unsigned int level, |
- texture::Face face, |
- unsigned int pitch, |
- unsigned int slice_pitch, |
- unsigned int size, |
- void *data); |
- |
- // Implements the DestroyTexture function for D3D9. |
- virtual ParseError DestroyTexture(ResourceId id); |
- |
- // Implements the CreateSampler function for D3D9. |
- virtual ParseError CreateSampler(ResourceId id); |
- |
- // Implements the DestroySampler function for D3D9. |
- virtual ParseError DestroySampler(ResourceId id); |
- |
- // Implements the SetSamplerStates function for D3D9. |
- virtual ParseError SetSamplerStates(ResourceId id, |
- sampler::AddressingMode addressing_u, |
- sampler::AddressingMode addressing_v, |
- sampler::AddressingMode addressing_w, |
- sampler::FilteringMode mag_filter, |
- sampler::FilteringMode min_filter, |
- sampler::FilteringMode mip_filter, |
- unsigned int max_anisotropy); |
- |
- // Implements the SetSamplerBorderColor function for D3D9. |
- virtual ParseError SetSamplerBorderColor(ResourceId id, const RGBA &color); |
- |
- // Implements the SetSamplerTexture function for D3D9. |
- virtual ParseError SetSamplerTexture(ResourceId id, ResourceId texture_id); |
- |
- // Implements the SetScissor function for D3D9. |
- virtual void SetScissor(bool enable, |
- unsigned int x, |
- unsigned int y, |
- unsigned int width, |
- unsigned int height); |
- |
- // Implements the SetPointLineRaster function for D3D9. |
- virtual void SetPointLineRaster(bool line_smooth, |
- bool point_sprite, |
- float point_size); |
- |
- // Implements the SetPolygonOffset function for D3D9. |
- virtual void SetPolygonOffset(float slope_factor, float units); |
- |
- // Implements the SetPolygonRaster function for D3D9. |
- virtual void SetPolygonRaster(PolygonMode fill_mode, |
- FaceCullMode cull_mode); |
- |
- // Implements the SetAlphaTest function for D3D9. |
- virtual void SetAlphaTest(bool enable, |
- float reference, |
- Comparison comp); |
- |
- // Implements the SetDepthTest function for D3D9. |
- virtual void SetDepthTest(bool enable, |
- bool write_enable, |
- Comparison comp); |
- |
- // Implements the SetStencilTest function for D3D9. |
- virtual void SetStencilTest(bool enable, |
- bool separate_ccw, |
- unsigned int write_mask, |
- unsigned int compare_mask, |
- unsigned int ref, |
- Uint32 func_ops); |
- |
- // Implements the SetColorWritefunction for D3D9. |
- virtual void SetColorWrite(bool red, |
- bool green, |
- bool blue, |
- bool alpha, |
- bool dither); |
- |
- // Implements the SetBlending function for D3D9. |
- virtual void SetBlending(bool enable, |
- bool separate_alpha, |
- BlendEq color_eq, |
- BlendFunc color_src_func, |
- BlendFunc color_dst_func, |
- BlendEq alpha_eq, |
- BlendFunc alpha_src_func, |
- BlendFunc alpha_dst_func); |
- |
- // Implements the SetBlendingColor function for D3D9. |
- virtual void SetBlendingColor(const RGBA &color); |
- |
- // Implements the CreateRenderSurface function for D3D9. |
- virtual ParseError CreateRenderSurface(ResourceId id, |
- unsigned int width, |
- unsigned int height, |
- unsigned int mip_level, |
- unsigned int side, |
- ResourceId texture_id); |
- |
- // Implements the DestroyRenderSurface function for D3D9. |
- virtual ParseError DestroyRenderSurface(ResourceId id); |
- |
- // Implements the CreateDepthSurface function for D3D9. |
- virtual ParseError CreateDepthSurface(ResourceId id, |
- unsigned int width, |
- unsigned int height); |
- |
- // Implements teh DestroyDepthSurface function for D3D9. |
- virtual ParseError DestroyDepthSurface(ResourceId id); |
- |
- // Implements the SetRenderSurface function for D3D9. |
- virtual ParseError SetRenderSurface(ResourceId render_surface_id, |
- ResourceId depth_stencil_id); |
- |
- // Implements the SetBackSurfaces function for D3D9. |
- virtual void SetBackSurfaces(); |
- |
- // Gets the D3D9 device. |
- IDirect3DDevice9 *d3d_device() const { return d3d_device_; } |
- |
- // Gets a vertex buffer by resource ID. |
- VertexBufferD3D9 *GetVertexBuffer(ResourceId id) { |
- return vertex_buffers_.Get(id); |
- } |
- |
- // Gets a texture by resource ID. |
- TextureD3D9 *GetTexture(ResourceId id) { |
- return textures_.Get(id); |
- } |
- |
- // Gets a sampler by resource ID. |
- SamplerD3D9 *GetSampler(ResourceId id) { |
- return samplers_.Get(id); |
- } |
- |
- EffectD3D9 *current_effect() { return current_effect_; } |
- |
- // Direct3D functions cannot be called directly because the DLLs are loaded |
- // dynamically via LoadLibrary. If you need to add another Direct3D function |
- // add another function here, a typedef matching the signature and a member |
- // variable of that type below. Then add code to FindDirect3DFunctions to |
- // get the address of that function out of the DLL and assign it to the |
- // member variable. Be careful to initialize the value of the variable to |
- // NULL in the constructor and to set it to again NULL in Destroy. |
- |
+/* |
+ * Copyright 2009, Google Inc. |
+ * All rights reserved. |
+ * |
+ * Redistribution and use in source and binary forms, with or without |
+ * modification, are permitted provided that the following conditions are |
+ * met: |
+ * |
+ * * Redistributions of source code must retain the above copyright |
+ * notice, this list of conditions and the following disclaimer. |
+ * * Redistributions in binary form must reproduce the above |
+ * copyright notice, this list of conditions and the following disclaimer |
+ * in the documentation and/or other materials provided with the |
+ * distribution. |
+ * * Neither the name of Google Inc. nor the names of its |
+ * contributors may be used to endorse or promote products derived from |
+ * this software without specific prior written permission. |
+ * |
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+ */ |
+ |
+ |
+// This file contains the GAPID3D9 class, implementing the GAPI interface for |
+// D3D9. |
+ |
+#ifndef O3D_COMMAND_BUFFER_SERVICE_WIN_D3D9_GAPI_D3D9_H_ |
+#define O3D_COMMAND_BUFFER_SERVICE_WIN_D3D9_GAPI_D3D9_H_ |
+ |
+#include "command_buffer/common/cross/gapi_interface.h" |
+#include "command_buffer/service/win/d3d9/d3d9_utils.h" |
+#include "command_buffer/service/win/d3d9/geometry_d3d9.h" |
+#include "command_buffer/service/win/d3d9/effect_d3d9.h" |
+#include "command_buffer/service/win/d3d9/texture_d3d9.h" |
+#include "command_buffer/service/win/d3d9/sampler_d3d9.h" |
+#include "command_buffer/service/win/d3d9/render_surface_d3d9.h" |
+ |
+namespace o3d { |
+namespace command_buffer { |
+ |
+// This class implements the GAPI interface for D3D9. |
+class GAPID3D9 : public GAPIInterface { |
+ public: |
+ GAPID3D9(); |
+ virtual ~GAPID3D9(); |
+ |
+ void set_hwnd(HWND hwnd) { hwnd_ = hwnd; } |
+ HWND hwnd() const { return hwnd_; } |
+ |
+ // Initializes the graphics context, bound to a window. |
+ // Returns: |
+ // true if successful. |
+ virtual bool Initialize(); |
+ |
+ // Destroys the graphics context. |
+ virtual void Destroy(); |
+ |
+ // Implements the BeginFrame function for D3D9. |
+ virtual void BeginFrame(); |
+ |
+ // Implements the EndFrame function for D3D9. |
+ virtual void EndFrame(); |
+ |
+ // Implements the Clear function for D3D9. |
+ virtual void Clear(unsigned int buffers, |
+ const RGBA &color, |
+ float depth, |
+ unsigned int stencil); |
+ |
+ // Implements the SetViewport function for D3D9. |
+ virtual void SetViewport(unsigned int x, |
+ unsigned int y, |
+ unsigned int width, |
+ unsigned int height, |
+ float z_min, |
+ float z_max); |
+ |
+ // Implements the CreateVertexBuffer function for D3D9. |
+ virtual ParseError CreateVertexBuffer(ResourceId id, |
+ unsigned int size, |
+ unsigned int flags); |
+ |
+ // Implements the DestroyVertexBuffer function for D3D9. |
+ virtual ParseError DestroyVertexBuffer(ResourceId id); |
+ |
+ // Implements the SetVertexBufferData function for D3D9. |
+ virtual ParseError SetVertexBufferData(ResourceId id, |
+ unsigned int offset, |
+ unsigned int size, |
+ const void *data); |
+ |
+ // Implements the GetVertexBufferData function for D3D9. |
+ virtual ParseError GetVertexBufferData(ResourceId id, |
+ unsigned int offset, |
+ unsigned int size, |
+ void *data); |
+ |
+ // Implements the CreateIndexBuffer function for D3D9. |
+ virtual ParseError CreateIndexBuffer(ResourceId id, |
+ unsigned int size, |
+ unsigned int flags); |
+ |
+ // Implements the DestroyIndexBuffer function for D3D9. |
+ virtual ParseError DestroyIndexBuffer(ResourceId id); |
+ |
+ // Implements the SetIndexBufferData function for D3D9. |
+ virtual ParseError SetIndexBufferData(ResourceId id, |
+ unsigned int offset, |
+ unsigned int size, |
+ const void *data); |
+ |
+ // Implements the GetIndexBufferData function for D3D9. |
+ virtual ParseError GetIndexBufferData(ResourceId id, |
+ unsigned int offset, |
+ unsigned int size, |
+ void *data); |
+ |
+ // Implements the CreateVertexStruct function for D3D9. |
+ virtual ParseError CreateVertexStruct(ResourceId id, |
+ unsigned int input_count); |
+ |
+ // Implements the DestroyVertexStruct function for D3D9. |
+ virtual ParseError DestroyVertexStruct(ResourceId id); |
+ |
+ // Implements the SetVertexInput function for D3D9. |
+ virtual ParseError SetVertexInput(ResourceId vertex_struct_id, |
+ unsigned int input_index, |
+ ResourceId vertex_buffer_id, |
+ unsigned int offset, |
+ unsigned int stride, |
+ vertex_struct::Type type, |
+ vertex_struct::Semantic semantic, |
+ unsigned int semantic_index); |
+ |
+ // Implements the SetVertexStruct function for D3D9. |
+ virtual ParseError SetVertexStruct(ResourceId id); |
+ |
+ // Implements the Draw function for D3D9. |
+ virtual ParseError Draw(PrimitiveType primitive_type, |
+ unsigned int first, |
+ unsigned int count); |
+ |
+ // Implements the DrawIndexed function for D3D9. |
+ virtual ParseError DrawIndexed(PrimitiveType primitive_type, |
+ ResourceId index_buffer_id, |
+ unsigned int first, |
+ unsigned int count, |
+ unsigned int min_index, |
+ unsigned int max_index); |
+ |
+ // Implements the CreateEffect function for D3D9. |
+ virtual ParseError CreateEffect(ResourceId id, |
+ unsigned int size, |
+ const void *data); |
+ |
+ // Implements the DestroyEffect function for D3D9. |
+ virtual ParseError DestroyEffect(ResourceId id); |
+ |
+ // Implements the SetEffect function for D3D9. |
+ virtual ParseError SetEffect(ResourceId id); |
+ |
+ // Implements the GetParamCount function for D3D9. |
+ virtual ParseError GetParamCount(ResourceId id, |
+ unsigned int size, |
+ void *data); |
+ |
+ // Implements the CreateParam function for D3D9. |
+ virtual ParseError CreateParam(ResourceId param_id, |
+ ResourceId effect_id, |
+ unsigned int index); |
+ |
+ // Implements the CreateParamByName function for D3D9. |
+ virtual ParseError CreateParamByName(ResourceId param_id, |
+ ResourceId effect_id, |
+ unsigned int size, |
+ const void *name); |
+ |
+ // Implements the DestroyParam function for D3D9. |
+ virtual ParseError DestroyParam(ResourceId id); |
+ |
+ // Implements the SetParamData function for D3D9. |
+ virtual ParseError SetParamData(ResourceId id, |
+ unsigned int size, |
+ const void *data); |
+ |
+ // Implements the GetParamDesc function for D3D9. |
+ virtual ParseError GetParamDesc(ResourceId id, |
+ unsigned int size, |
+ void *data); |
+ |
+ // Implements the GetStreamCount function for D3D9. |
+ virtual ParseError GetStreamCount(ResourceId id, |
+ unsigned int size, |
+ void *data); |
+ |
+ // Implements the GetStreamDesc function for D3D9. |
+ virtual ParseError GetStreamDesc(ResourceId id, |
+ unsigned int index, |
+ unsigned int size, |
+ void *data); |
+ |
+ // Implements the CreateTexture2D function for D3D9. |
+ virtual ParseError CreateTexture2D(ResourceId id, |
+ unsigned int width, |
+ unsigned int height, |
+ unsigned int levels, |
+ texture::Format format, |
+ unsigned int flags, |
+ bool enable_render_surfaces); |
+ |
+ // Implements the CreateTexture3D function for D3D9. |
+ virtual ParseError CreateTexture3D(ResourceId id, |
+ unsigned int width, |
+ unsigned int height, |
+ unsigned int depth, |
+ unsigned int levels, |
+ texture::Format format, |
+ unsigned int flags, |
+ bool enable_render_surfaces); |
+ |
+ // Implements the CreateTextureCube function for D3D9. |
+ virtual ParseError CreateTextureCube(ResourceId id, |
+ unsigned int side, |
+ unsigned int levels, |
+ texture::Format format, |
+ unsigned int flags, |
+ bool enable_render_surfaces); |
+ |
+ // Implements the SetTextureData function for D3D9. |
+ virtual ParseError SetTextureData(ResourceId id, |
+ unsigned int x, |
+ unsigned int y, |
+ unsigned int z, |
+ unsigned int width, |
+ unsigned int height, |
+ unsigned int depth, |
+ unsigned int level, |
+ texture::Face face, |
+ unsigned int pitch, |
+ unsigned int slice_pitch, |
+ unsigned int size, |
+ const void *data); |
+ |
+ // Implements the GetTextureData function for D3D9. |
+ virtual ParseError GetTextureData(ResourceId id, |
+ unsigned int x, |
+ unsigned int y, |
+ unsigned int z, |
+ unsigned int width, |
+ unsigned int height, |
+ unsigned int depth, |
+ unsigned int level, |
+ texture::Face face, |
+ unsigned int pitch, |
+ unsigned int slice_pitch, |
+ unsigned int size, |
+ void *data); |
+ |
+ // Implements the DestroyTexture function for D3D9. |
+ virtual ParseError DestroyTexture(ResourceId id); |
+ |
+ // Implements the CreateSampler function for D3D9. |
+ virtual ParseError CreateSampler(ResourceId id); |
+ |
+ // Implements the DestroySampler function for D3D9. |
+ virtual ParseError DestroySampler(ResourceId id); |
+ |
+ // Implements the SetSamplerStates function for D3D9. |
+ virtual ParseError SetSamplerStates(ResourceId id, |
+ sampler::AddressingMode addressing_u, |
+ sampler::AddressingMode addressing_v, |
+ sampler::AddressingMode addressing_w, |
+ sampler::FilteringMode mag_filter, |
+ sampler::FilteringMode min_filter, |
+ sampler::FilteringMode mip_filter, |
+ unsigned int max_anisotropy); |
+ |
+ // Implements the SetSamplerBorderColor function for D3D9. |
+ virtual ParseError SetSamplerBorderColor(ResourceId id, const RGBA &color); |
+ |
+ // Implements the SetSamplerTexture function for D3D9. |
+ virtual ParseError SetSamplerTexture(ResourceId id, ResourceId texture_id); |
+ |
+ // Implements the SetScissor function for D3D9. |
+ virtual void SetScissor(bool enable, |
+ unsigned int x, |
+ unsigned int y, |
+ unsigned int width, |
+ unsigned int height); |
+ |
+ // Implements the SetPointLineRaster function for D3D9. |
+ virtual void SetPointLineRaster(bool line_smooth, |
+ bool point_sprite, |
+ float point_size); |
+ |
+ // Implements the SetPolygonOffset function for D3D9. |
+ virtual void SetPolygonOffset(float slope_factor, float units); |
+ |
+ // Implements the SetPolygonRaster function for D3D9. |
+ virtual void SetPolygonRaster(PolygonMode fill_mode, |
+ FaceCullMode cull_mode); |
+ |
+ // Implements the SetAlphaTest function for D3D9. |
+ virtual void SetAlphaTest(bool enable, |
+ float reference, |
+ Comparison comp); |
+ |
+ // Implements the SetDepthTest function for D3D9. |
+ virtual void SetDepthTest(bool enable, |
+ bool write_enable, |
+ Comparison comp); |
+ |
+ // Implements the SetStencilTest function for D3D9. |
+ virtual void SetStencilTest(bool enable, |
+ bool separate_ccw, |
+ unsigned int write_mask, |
+ unsigned int compare_mask, |
+ unsigned int ref, |
+ Uint32 func_ops); |
+ |
+ // Implements the SetColorWritefunction for D3D9. |
+ virtual void SetColorWrite(bool red, |
+ bool green, |
+ bool blue, |
+ bool alpha, |
+ bool dither); |
+ |
+ // Implements the SetBlending function for D3D9. |
+ virtual void SetBlending(bool enable, |
+ bool separate_alpha, |
+ BlendEq color_eq, |
+ BlendFunc color_src_func, |
+ BlendFunc color_dst_func, |
+ BlendEq alpha_eq, |
+ BlendFunc alpha_src_func, |
+ BlendFunc alpha_dst_func); |
+ |
+ // Implements the SetBlendingColor function for D3D9. |
+ virtual void SetBlendingColor(const RGBA &color); |
+ |
+ // Implements the CreateRenderSurface function for D3D9. |
+ virtual ParseError CreateRenderSurface(ResourceId id, |
+ unsigned int width, |
+ unsigned int height, |
+ unsigned int mip_level, |
+ unsigned int side, |
+ ResourceId texture_id); |
+ |
+ // Implements the DestroyRenderSurface function for D3D9. |
+ virtual ParseError DestroyRenderSurface(ResourceId id); |
+ |
+ // Implements the CreateDepthSurface function for D3D9. |
+ virtual ParseError CreateDepthSurface(ResourceId id, |
+ unsigned int width, |
+ unsigned int height); |
+ |
+ // Implements teh DestroyDepthSurface function for D3D9. |
+ virtual ParseError DestroyDepthSurface(ResourceId id); |
+ |
+ // Implements the SetRenderSurface function for D3D9. |
+ virtual ParseError SetRenderSurface(ResourceId render_surface_id, |
+ ResourceId depth_stencil_id); |
+ |
+ // Implements the SetBackSurfaces function for D3D9. |
+ virtual void SetBackSurfaces(); |
+ |
+ // Gets the D3D9 device. |
+ IDirect3DDevice9 *d3d_device() const { return d3d_device_; } |
+ |
+ // Gets a vertex buffer by resource ID. |
+ VertexBufferD3D9 *GetVertexBuffer(ResourceId id) { |
+ return vertex_buffers_.Get(id); |
+ } |
+ |
+ // Gets a texture by resource ID. |
+ TextureD3D9 *GetTexture(ResourceId id) { |
+ return textures_.Get(id); |
+ } |
+ |
+ // Gets a sampler by resource ID. |
+ SamplerD3D9 *GetSampler(ResourceId id) { |
+ return samplers_.Get(id); |
+ } |
+ |
+ EffectD3D9 *current_effect() { return current_effect_; } |
+ |
+ // Direct3D functions cannot be called directly because the DLLs are loaded |
+ // dynamically via LoadLibrary. If you need to add another Direct3D function |
+ // add another function here, a typedef matching the signature and a member |
+ // variable of that type below. Then add code to FindDirect3DFunctions to |
+ // get the address of that function out of the DLL and assign it to the |
+ // member variable. Be careful to initialize the value of the variable to |
+ // NULL in the constructor and to set it to again NULL in Destroy. |
+ |
IDirect3D9* Direct3DCreate(UINT version) { |
DCHECK(direct3d_create9_); |
return direct3d_create9_(version); |
@@ -412,97 +412,97 @@ |
return get_shader_constant_table_(function, table); |
} |
- HRESULT D3DXCreateEffect(LPDIRECT3DDEVICE9 device, |
- LPCVOID src_data, |
- UINT src_data_len, |
- CONST D3DXMACRO * defines, |
- LPD3DXINCLUDE include, |
- DWORD flags, |
- LPD3DXEFFECTPOOL pool, |
- LPD3DXEFFECT * effect, |
+ HRESULT D3DXCreateEffect(LPDIRECT3DDEVICE9 device, |
+ LPCVOID src_data, |
+ UINT src_data_len, |
+ CONST D3DXMACRO * defines, |
+ LPD3DXINCLUDE include, |
+ DWORD flags, |
+ LPD3DXEFFECTPOOL pool, |
+ LPD3DXEFFECT * effect, |
LPD3DXBUFFER * compilation_errors) { |
DCHECK(create_effect_); |
return create_effect_(device, src_data, src_data_len, defines, include, |
flags, pool, effect, compilation_errors); |
} |
- |
- HRESULT D3DXGetShaderInputSemantics(const DWORD* function, |
- D3DXSEMANTIC* semantics, |
- UINT* count) { |
- DCHECK(get_shader_input_semantics_); |
- return get_shader_input_semantics_(function, semantics, count); |
- } |
- |
- private: |
- bool FindDirect3DFunctions(); |
- |
- // Validates the current vertex struct to D3D, setting the streams. |
- bool ValidateStreams(); |
- // Validates the current effect to D3D. This sends the effect states to D3D. |
- bool ValidateEffect(); |
- // "Dirty" the current effect. This resets the effect states to D3D, and |
- // requires ValidateEffect() to be called before further draws occur. |
- void DirtyEffect(); |
- |
- // Module handle for d3d9.dll. |
- HMODULE d3d_module_; |
- |
- // Module handle for d3dx9_n.dll |
- HMODULE d3dx_module_; |
- |
- LPDIRECT3D9 d3d_; |
- LPDIRECT3DDEVICE9 d3d_device_; |
- HWND hwnd_; |
- ResourceId current_vertex_struct_; |
- bool validate_streams_; |
- unsigned int max_vertices_; |
- ResourceId current_effect_id_; |
- bool validate_effect_; |
+ |
+ HRESULT D3DXGetShaderInputSemantics(const DWORD* function, |
+ D3DXSEMANTIC* semantics, |
+ UINT* count) { |
+ DCHECK(get_shader_input_semantics_); |
+ return get_shader_input_semantics_(function, semantics, count); |
+ } |
+ |
+ private: |
+ bool FindDirect3DFunctions(); |
+ |
+ // Validates the current vertex struct to D3D, setting the streams. |
+ bool ValidateStreams(); |
+ // Validates the current effect to D3D. This sends the effect states to D3D. |
+ bool ValidateEffect(); |
+ // "Dirty" the current effect. This resets the effect states to D3D, and |
+ // requires ValidateEffect() to be called before further draws occur. |
+ void DirtyEffect(); |
+ |
+ // Module handle for d3d9.dll. |
+ HMODULE d3d_module_; |
+ |
+ // Module handle for d3dx9_n.dll |
+ HMODULE d3dx_module_; |
+ |
+ LPDIRECT3D9 d3d_; |
+ LPDIRECT3DDEVICE9 d3d_device_; |
+ HWND hwnd_; |
+ ResourceId current_vertex_struct_; |
+ bool validate_streams_; |
+ unsigned int max_vertices_; |
+ ResourceId current_effect_id_; |
+ bool validate_effect_; |
EffectD3D9 *current_effect_; |
IDirect3DSurface9* back_buffer_surface_; |
- IDirect3DSurface9* back_buffer_depth_surface_; |
- ResourceId current_surface_id_; |
- ResourceId current_depth_surface_id_; |
- |
- ResourceMap<VertexBufferD3D9> vertex_buffers_; |
- ResourceMap<IndexBufferD3D9> index_buffers_; |
- ResourceMap<VertexStructD3D9> vertex_structs_; |
- ResourceMap<EffectD3D9> effects_; |
- ResourceMap<EffectParamD3D9> effect_params_; |
- ResourceMap<TextureD3D9> textures_; |
- ResourceMap<SamplerD3D9> samplers_; |
- ResourceMap<RenderSurfaceD3D9> render_surfaces_; |
- ResourceMap<RenderDepthStencilSurfaceD3D9> depth_surfaces_; |
- |
+ IDirect3DSurface9* back_buffer_depth_surface_; |
+ ResourceId current_surface_id_; |
+ ResourceId current_depth_surface_id_; |
+ |
+ ResourceMap<VertexBufferD3D9> vertex_buffers_; |
+ ResourceMap<IndexBufferD3D9> index_buffers_; |
+ ResourceMap<VertexStructD3D9> vertex_structs_; |
+ ResourceMap<EffectD3D9> effects_; |
+ ResourceMap<EffectParamD3D9> effect_params_; |
+ ResourceMap<TextureD3D9> textures_; |
+ ResourceMap<SamplerD3D9> samplers_; |
+ ResourceMap<RenderSurfaceD3D9> render_surfaces_; |
+ ResourceMap<RenderDepthStencilSurfaceD3D9> depth_surfaces_; |
+ |
typedef IDirect3D9* (WINAPI *Direct3DCreate9Proc)(UINT version); |
- Direct3DCreate9Proc direct3d_create9_; |
+ Direct3DCreate9Proc direct3d_create9_; |
typedef HRESULT (WINAPI *D3DXGetShaderConstantTableProc)( |
const DWORD* function, |
LPD3DXCONSTANTTABLE* table); |
D3DXGetShaderConstantTableProc get_shader_constant_table_; |
- typedef HRESULT (WINAPI *D3DXCreateEffectProc)( |
- LPDIRECT3DDEVICE9 device, |
- LPCVOID src_data, |
- UINT src_data_len, |
- CONST D3DXMACRO * defines, |
- LPD3DXINCLUDE include, |
- DWORD flags, |
- LPD3DXEFFECTPOOL pool, |
- LPD3DXEFFECT * effect, |
+ typedef HRESULT (WINAPI *D3DXCreateEffectProc)( |
+ LPDIRECT3DDEVICE9 device, |
+ LPCVOID src_data, |
+ UINT src_data_len, |
+ CONST D3DXMACRO * defines, |
+ LPD3DXINCLUDE include, |
+ DWORD flags, |
+ LPD3DXEFFECTPOOL pool, |
+ LPD3DXEFFECT * effect, |
LPD3DXBUFFER * compilation_errors); |
- D3DXCreateEffectProc create_effect_; |
- |
- typedef HRESULT (WINAPI *D3DXGetShaderInputSemanticsProc)( |
- const DWORD* function, |
- D3DXSEMANTIC* semantics, |
- UINT* count); |
- D3DXGetShaderInputSemanticsProc get_shader_input_semantics_; |
-}; |
- |
-} // namespace command_buffer |
-} // namespace o3d |
- |
-#endif // O3D_COMMAND_BUFFER_SERVICE_WIN_D3D9_GAPI_D3D9_H_ |
- |
+ D3DXCreateEffectProc create_effect_; |
+ |
+ typedef HRESULT (WINAPI *D3DXGetShaderInputSemanticsProc)( |
+ const DWORD* function, |
+ D3DXSEMANTIC* semantics, |
+ UINT* count); |
+ D3DXGetShaderInputSemanticsProc get_shader_input_semantics_; |
+}; |
+ |
+} // namespace command_buffer |
+} // namespace o3d |
+ |
+#endif // O3D_COMMAND_BUFFER_SERVICE_WIN_D3D9_GAPI_D3D9_H_ |
+ |