stg > game > Scene0


stg/game/Scene0.h : ver090130

  1. #ifndef __STG_GAME_SCENE0_H__
  2. #define __STG_GAME_SCENE0_H__
  3.  
  4. #include <windows.h>
  5. #include <d3d9.h>
  6. #include <d3dx9.h>
  7. #include <boost/smart_ptr.hpp>
  8. #include "siki/Siki.h"
  9. #include "siki/d3d/Scene.h"
  10. #include "siki/d3d/CustomVertex.h"
  11.  
  12. namespace stg{
  13. namespace game{
  14.  
  15. class Scene0 : public siki::d3d::Scene{
  16. public:
  17. Scene0();
  18.  
  19. ~Scene0();
  20.  
  21. virtual bool SetDevice(sharedptr<IDirect3D9> d3dobj, sharedptr<IDirect3DDevice9> device);
  22.  
  23. virtual bool Update();
  24.  
  25. virtual bool Draw(sharedptr<IDirect3D9> d3dobj, sharedptr<IDirect3DDevice9> device);
  26.  
  27. private:
  28. siki::d3d::TransformedVertex *m_v;
  29. IDirect3DVertexBuffer9 *m_pvertex;
  30. boost::shared_ptr<IDirect3DVertexBuffer9> m_vertices;
  31. };
  32.  
  33. } // namespace game
  34. } // namespace stg
  35.  
  36. #endif // __STG0_GAME_SCENE0_H__
  37.  


stg/game/Scene0.cpp : ver090130

  1. #include "../StdAfx.h"
  2. #include <boost/smart_ptr.hpp>
  3. #include <boost/signal.hpp>
  4. #include "Scene0.h"
  5.  
  6. namespace stg{
  7. namespace game{
  8.  
  9. Scene0::Scene0() :
  10. siki::d3d::Scene(1),
  11. m_pvertex(0){
  12.  
  13. static siki::d3d::TransformedVertex v[4] = {
  14. {300.0f, 200.0f, 0.0f, 1.0f, 0xffffffff, 0.0f, 0.0f},
  15. {300.0f, 300.0f, 0.0f, 1.0f, 0xffffffff, 0.0f, 1.0f},
  16. {200.0f, 200.0f, 0.0f, 1.0f, 0xffffffff, 1.0f, 0.0f},
  17. {200.0f, 300.0f, 0.0f, 1.0f, 0xffffffff, 1.0f, 1.0f}
  18. };
  19. m_v = v;
  20. }
  21.  
  22. Scene0::~Scene0(){
  23.  
  24. }
  25.  
  26. bool Scene0::SetDevice(sharedptr<IDirect3D9> d3dobj, sharedptr<IDirect3DDevice9> device){
  27. siki::d3d::TransformedVertex v[4] = {
  28. {300.0f, 200.0f, 0.0f, 1.0f, 0xffffffff, 0.0f, 0.0f},
  29. {300.0f, 300.0f, 0.0f, 1.0f, 0xffffffff, 0.0f, 1.0f},
  30. {200.0f, 200.0f, 0.0f, 1.0f, 0xffffffff, 1.0f, 0.0f},
  31. {200.0f, 300.0f, 0.0f, 1.0f, 0xffffffff, 1.0f, 1.0f}
  32. };
  33. //IDirect3DVertexBuffer9* pVertex;
  34. HRESULT hr = device->CreateVertexBuffer(
  35. sizeof(siki::d3d::TransformedVertex)*4,
  36. D3DUSAGE_WRITEONLY,
  37. D3DFVF_TRANSFORMED,
  38. D3DPOOL_MANAGED,
  39. &m_pvertex,
  40. NULL
  41. );
  42. if(!SUCCEEDED(hr)){
  43. return false;
  44. }
  45.  
  46. //IDirect3DVertexBuffer9* pVertex;
  47. hr = device->CreateVertexBuffer(
  48. sizeof(siki::d3d::TransformedVertex)*4,
  49. D3DUSAGE_WRITEONLY,
  50. D3DFVF_TRANSFORMED,
  51. D3DPOOL_MANAGED,
  52. &m_pvertex,
  53. NULL
  54. );
  55.  
  56. void *pData;
  57. hr = m_pvertex->Lock(0, sizeof(siki::d3d::TransformedVertex)*4, (void**)&pData, 0);
  58.  
  59. if(hr == D3D_OK){
  60. memcpy(pData, v, sizeof(siki::d3d::TransformedVertex)*4);
  61. m_pvertex->Unlock();
  62. }
  63. return true;
  64. }
  65.  
  66. bool Scene0::Update(){
  67. return true;
  68. }
  69.  
  70. bool Scene0::Draw(sharedptr<IDirect3D9> d3dobj, sharedptr<IDirect3DDevice9> device){
  71. device->SetStreamSource(0, m_pvertex, 0, sizeof(siki::d3d::TransformedVertex));
  72. device->SetFVF(D3DFVF_TRANSFORMED);
  73. device->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
  74. return true;
  75. }
  76.  
  77. } // namespace game
  78. } // namespace stg
  79.  

[09/01/30 22:09][履歴][編集]
最終更新:2009年01月30日 22:09