Advertisement
Guest User

Untitled

a guest
Jan 24th, 2020
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. #ifdef ENABLE_RENDER_TARGET
  2. void CGraphicImageInstance::OnRender()
  3. {
  4. CGraphicTexture* graphicTexture = m_roImage->GetTexturePointer();
  5.  
  6. float fimgWidth = m_roImage->GetWidth() * m_v2Scale.x;
  7. float fimgHeight = m_roImage->GetHeight() * m_v2Scale.y;
  8.  
  9. const RECT& c_rRect = m_roImage->GetRectReference();
  10. float texReverseWidth = 1.0f / float(graphicTexture->GetWidth());
  11. float texReverseHeight = 1.0f / float(graphicTexture->GetHeight());
  12. float su = c_rRect.left * texReverseWidth;
  13. float sv = c_rRect.top * texReverseHeight;
  14. float eu = (c_rRect.left + (c_rRect.right - c_rRect.left)) * texReverseWidth;
  15. float ev = (c_rRect.top + (c_rRect.bottom - c_rRect.top)) * texReverseHeight;
  16.  
  17.  
  18. TPDTVertex vertices[4];
  19. vertices[0].position.x = m_v2Position.x - 0.5f;
  20. vertices[0].position.y = m_v2Position.y - 0.5f;
  21. vertices[0].position.z = 0.0f;
  22. vertices[0].texCoord = TTextureCoordinate(su, sv);
  23. vertices[0].diffuse = m_DiffuseColor;
  24.  
  25. vertices[1].position.x = m_v2Position.x + fimgWidth - 0.5f;
  26. vertices[1].position.y = m_v2Position.y - 0.5f;
  27. vertices[1].position.z = 0.0f;
  28. vertices[1].texCoord = TTextureCoordinate(eu, sv);
  29. vertices[1].diffuse = m_DiffuseColor;
  30.  
  31. vertices[2].position.x = m_v2Position.x - 0.5f;
  32. vertices[2].position.y = m_v2Position.y + fimgHeight - 0.5f;
  33. vertices[2].position.z = 0.0f;
  34. vertices[2].texCoord = TTextureCoordinate(su, ev);
  35. vertices[2].diffuse = m_DiffuseColor;
  36.  
  37. vertices[3].position.x = m_v2Position.x + fimgWidth - 0.5f;
  38. vertices[3].position.y = m_v2Position.y + fimgHeight - 0.5f;
  39. vertices[3].position.z = 0.0f;
  40. vertices[3].texCoord = TTextureCoordinate(eu, ev);
  41. vertices[3].diffuse = m_DiffuseColor;
  42.  
  43. if (CGraphicBase::SetPDTStream(vertices, 4))
  44. {
  45. CGraphicBase::SetDefaultIndexBuffer(CGraphicBase::DEFAULT_IB_FILL_RECT);
  46.  
  47. STATEMANAGER.SetTexture(0, graphicTexture->GetD3DTexture());
  48. STATEMANAGER.SetTexture(1, NULL);
  49. STATEMANAGER.SetVertexShader(D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1);
  50. STATEMANAGER.DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 4, 0, 2);
  51. }
  52. }
  53. #else
  54. void CGraphicImageInstance::OnRender()
  55. {
  56. CGraphicImage * pImage = m_roImage.GetPointer();
  57. CGraphicTexture * pTexture = pImage->GetTexturePointer();
  58.  
  59. float fimgWidth = pImage->GetWidth()*m_vScale;
  60. float fimgHeight = pImage->GetHeight()*m_vScale;
  61.  
  62. const RECT& c_rRect = pImage->GetRectReference();
  63. float texReverseWidth = 1.0f / float(pTexture->GetWidth());
  64. float texReverseHeight = 1.0f / float(pTexture->GetHeight());
  65. float su = c_rRect.left * texReverseWidth;
  66. float sv = c_rRect.top * texReverseHeight;
  67. float eu = (c_rRect.left + (c_rRect.right-c_rRect.left)) * texReverseWidth;
  68. float ev = (c_rRect.top + (c_rRect.bottom-c_rRect.top)) * texReverseHeight;
  69.  
  70. TPDTVertex vertices[4];
  71. vertices[0].position.x = m_v2Position.x-0.5f;
  72. vertices[0].position.y = m_v2Position.y-0.5f;
  73. vertices[0].position.z = 0.0f;
  74. vertices[0].texCoord = TTextureCoordinate(su, sv);
  75. vertices[0].diffuse = m_DiffuseColor;
  76.  
  77. vertices[1].position.x = m_v2Position.x + fimgWidth-0.5f;
  78. vertices[1].position.y = m_v2Position.y-0.5f;
  79. vertices[1].position.z = 0.0f;
  80. vertices[1].texCoord = TTextureCoordinate(eu, sv);
  81. vertices[1].diffuse = m_DiffuseColor;
  82.  
  83. vertices[2].position.x = m_v2Position.x-0.5f;
  84. vertices[2].position.y = m_v2Position.y + fimgHeight-0.5f;
  85. vertices[2].position.z = 0.0f;
  86. vertices[2].texCoord = TTextureCoordinate(su, ev);
  87. vertices[2].diffuse = m_DiffuseColor;
  88.  
  89. vertices[3].position.x = m_v2Position.x + fimgWidth-0.5f;
  90. vertices[3].position.y = m_v2Position.y + fimgHeight-0.5f;
  91. vertices[3].position.z = 0.0f;
  92. vertices[3].texCoord = TTextureCoordinate(eu, ev);
  93. vertices[3].diffuse = m_DiffuseColor;
  94.  
  95. // 2004.11.18.myevan.ctrl+alt+del 반복 사용시 튕기는 문제
  96. if (CGraphicBase::SetPDTStream(vertices, 4))
  97. {
  98. CGraphicBase::SetDefaultIndexBuffer(CGraphicBase::DEFAULT_IB_FILL_RECT);
  99.  
  100. STATEMANAGER.SetTexture(0, pTexture->GetD3DTexture());
  101. STATEMANAGER.SetTexture(1, NULL);
  102. STATEMANAGER.SetVertexShader(D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1);
  103. STATEMANAGER.DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 4, 0, 2);
  104. }
  105. //OLD: STATEMANAGER.DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST, 0, 4, 2, c_FillRectIndices, D3DFMT_INDEX16, vertices, sizeof(TPDTVertex));
  106. ////////////////////////////////////////////////////////////
  107. }
  108. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement