World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Файл RenderOpenGL.cpp

См. исходные тексты.

Функции

unsigned int BlendColors (unsigned int a1, unsigned int a2)
 
void _set_3d_projection_matrix ()
 
void _set_3d_modelview_matrix ()
 
void _set_ortho_projection (bool gameviewport=false)
 
void _set_ortho_modelview ()
 

Переменные

std::shared_ptr< IRenderrender
 
int uNumDecorationsDrawnThisFrame
 
RenderBillboard pBillboardRenderList [500]
 
unsigned int uNumBillboardsToDraw
 
int uNumSpritesDrawnThisFrame
 
RenderVertexSoft array_507D30 [50]
 
const int terrain_block_scale = 512
 
const int terrain_height_scale = 32
 
RenderVertexSoft ogl_draw_buildings_vertices [20]
 

Функции

◆ BlendColors()

unsigned int BlendColors ( unsigned int  a1,
unsigned int  a2 
)

См. определение в файле RenderBase.cpp строка 265

265  {
266  uint alpha =
267  (uint)floorf(0.5f + (a1 >> 24) / 255.0f * (a2 >> 24) / 255.0f * 255.0f);
268  uint red = (uint)floorf(0.5f + ((a1 >> 16) & 0xFF) / 255.0f *
269  ((a2 >> 16) & 0xFF) / 255.0f * 255.0f);
270  uint green = (uint)floorf(0.5f + ((a1 >> 8) & 0xFF) / 255.0f *
271  ((a2 >> 8) & 0xFF) / 255.0f * 255.0f);
272  uint blue = (uint)floorf(0.5f + ((a1 >> 0) & 0xFF) / 255.0f *
273  ((a2 >> 0) & 0xFF) / 255.0f * 255.0f);
274  return (alpha << 24) | (red << 16) | (green << 8) | blue;
275 }

Используется в RenderOpenGL::DrawBillboard_Indoor() и RenderBase::TransformBillboard().

+ Граф вызова функции:

◆ _set_3d_projection_matrix()

void _set_3d_projection_matrix ( )

См. определение в файле RenderOpenGL.cpp строка 1059

1059  {
1060  float near_clip = pIndoorCameraD3D->GetNearClip();
1061  float far_clip = pIndoorCameraD3D->GetFarClip();
1062 
1063  glMatrixMode(GL_PROJECTION);
1064  glLoadIdentity();
1065 
1066 
1067  // outdoors 60 - should be 75?
1068  // indoors 65?/
1069  // something to do with ratio of screenwidth to viewport width
1070 
1071 
1072  gluPerspective(65, double(game_viewport_width/double(game_viewport_height)) // 65.0f
1073  /*(GLfloat)window->GetWidth() / (GLfloat)window->GetHeight()*/,
1074  near_clip, far_clip);
1075 }

Перекрестные ссылки game_viewport_height, game_viewport_width, IndoorCameraD3D::GetFarClip(), IndoorCameraD3D::GetNearClip(), glLoadIdentity(), glMatrixMode() и pIndoorCameraD3D.

Используется в RenderOpenGL::DrawBuildingsD3D(), RenderOpenGL::DrawIndoorPolygon() и RenderOpenGL::RenderTerrainD3D().

+ Граф вызовов:
+ Граф вызова функции:

◆ _set_3d_modelview_matrix()

void _set_3d_modelview_matrix ( )

См. определение в файле RenderOpenGL.cpp строка 1077

1077  {
1078  glMatrixMode(GL_MODELVIEW);
1079  glLoadIdentity();
1080  glScalef(1.0f, 1.0f, -1.0f);
1081 
1082  int camera_x = pParty->vPosition.x - pParty->y_rotation_granularity * cosf(2 * pi_double * pParty->sRotationY / 2048.0);
1083  int camera_z = pParty->vPosition.y - pParty->y_rotation_granularity * sinf(2 * pi_double * pParty->sRotationY / 2048.0);
1084  int camera_y = pParty->vPosition.z + pParty->sEyelevel;
1085 
1086  gluLookAt(camera_x, camera_y, camera_z,
1087 
1088  camera_x - pParty->y_rotation_granularity *
1089  cosf(2 * 3.14159 * pParty->sRotationY / 2048.0) /*- 5*/,
1090  camera_y - pParty->y_rotation_granularity *
1091  sinf(2 * 3.14159 * (pParty->sRotationX/*-25*/) / 2048.0),
1092  camera_z - pParty->y_rotation_granularity *
1093  sinf(2 * 3.14159 * pParty->sRotationY / 2048.0),
1094 
1095  0, 1, 0);
1096 }

Перекрестные ссылки glLoadIdentity(), glMatrixMode(), glScalef(), pParty, Party::sEyelevel, Party::sRotationX, Party::sRotationY, Party::vPosition и Party::y_rotation_granularity.

Используется в RenderOpenGL::DrawBuildingsD3D(), RenderOpenGL::DrawIndoorPolygon() и RenderOpenGL::RenderTerrainD3D().

+ Граф вызовов:
+ Граф вызова функции:

◆ _set_ortho_projection()

void _set_ortho_projection ( bool  gameviewport = false)

См. определение в файле RenderOpenGL.cpp строка 1098

1098  {
1099  if (!gameviewport) { // project over entire window
1100  glViewport(0, 0, window->GetWidth(), window->GetHeight());
1101 
1102  glMatrixMode(GL_PROJECTION);
1103  glLoadIdentity();
1104  glOrtho(0, window->GetWidth(), window->GetHeight(), 0, -1, 1);
1105  } else { // project to game viewport
1107 
1108  glMatrixMode(GL_PROJECTION);
1109  glLoadIdentity();
1110  glOrtho(game_viewport_x, game_viewport_z, game_viewport_w, game_viewport_y, 1, -1); // far = 1 but ogl looks down -z
1111  }
1112 }

Перекрестные ссылки game_viewport_height, game_viewport_w, game_viewport_width, game_viewport_x, game_viewport_y, game_viewport_z, glLoadIdentity(), glMatrixMode(), glOrtho() и glViewport().

Используется в RenderOpenGL::BeginScene(), RenderOpenGL::DoRenderBillboards_D3D() и RenderOpenGL::DrawOutdoorSkyD3D().

+ Граф вызовов:
+ Граф вызова функции:

◆ _set_ortho_modelview()

void _set_ortho_modelview ( )

См. определение в файле RenderOpenGL.cpp строка 1114

1114  {
1115  glMatrixMode(GL_MODELVIEW);
1116  glLoadIdentity();
1117 }

Перекрестные ссылки glLoadIdentity() и glMatrixMode().

Используется в RenderOpenGL::BeginScene(), RenderOpenGL::DoRenderBillboards_D3D() и RenderOpenGL::DrawOutdoorSkyD3D().

+ Граф вызовов:
+ Граф вызова функции:

Переменные

◆ render

std::shared_ptr<IRender> render

См. определение в файле RenderOpenGL.cpp строка 52

Используется в CastSpellInfoHelpers::_427E01_cast_spell(), _441A4E_overlay_on_portrait(), Engine::_44EEA7(), SpellFX_Billboard::_47829F_sphere_particle(), AlchemyMagicShopWares(), Render::am_Blt_Chroma(), LightmapBuilder::ApplyLight_ODM(), ArenaFight(), ArmorShopWares(), RenderOpenGL::BeginSceneD3D(), Render::BeginSceneD3D(), RenderBase::Billboard_ProbablyAddToListAndSortByZOrder(), Render::BlendTextures(), BookUI_Spellbook_DrawCurrentSchoolBackground(), buttonbox(), GUIWindow_CharacterRecord::CharacterUI_AwardsTab_Draw(), CharacterUI_DrawItem(), CharacterUI_DrawPaperdoll(), CharacterUI_DrawPaperdollWithRingOverlay(), CharacterUI_InventoryTab_Draw(), GUIWindow_CharacterRecord::CharacterUI_SkillsTab_Draw(), GUIWindow_CharacterRecord::CharacterUI_StatsTab_Draw(), TextureOpenGL::Create(), IndoorCameraD3D::debug_outline_d3d(), IndoorCameraD3D::DebugDrawPortal(), Engine::Deinitialize(), IndoorCameraD3D::do_draw_debug_line_sw(), LightmapBuilder::DoDraw_183808_Lightmaps(), Vis::DoesRayIntersectBillboard(), DoPrepareWorld(), GUIProgressBar::Draw(), ParticleEngine::Draw(), Engine::Draw(), IndoorLocation::Draw(), LightmapBuilder::Draw_183808_Lightmaps(), draw_leather(), DrawBeastsCount(), DecalBuilder::DrawBloodsplats(), DrawBook_Map_sub(), DrawBricksCount(), RenderOpenGL::DrawBuildingsD3D(), Render::DrawBuildingsD3D(), DrawCardAnimation(), DrawCards(), Mouse::DrawCursorToTarget(), DecalBuilder::DrawDecals(), DrawGameUI(), DrawGemsCount(), Engine::DrawGUI(), Actor::DrawHealthBar(), Render::DrawIndoorSky(), LightmapBuilder::DrawLightmaps(), Render::DrawMasked(), RenderOpenGL::DrawMonsterPortrait(), Render::DrawMonsterPortrait(), ParticleEngine::DrawParticles_BLV(), SpellFxRenderer::DrawPlayerBuffAnims(), DrawPlayerLevels(), DrawPlayersTowers(), DrawPlayersWall(), Render::DrawPolygon(), DrawPopupWindow(), SpellFxRenderer::DrawProjectiles(), DrawRect(), DrawRectanglesForText(), Weather::DrawSnow(), DrawSparks(), Render::DrawTerrainPolygon(), GUIFont::DrawText(), Render::DrawText(), Render::DrawTextAlpha(), GUIFont::DrawTextInRect(), GUIFont::DrawTextLine(), OtherOverlayList::DrawTurnBasedIcon(), Engine_DeinitializeAndTerminate(), EnterHouse(), Application::Menu::EventLoop(), Application::Game::EventLoop(), OutdoorLocation::ExecDraw(), IndoorLocation::ExecDraw_d3d(), GUICredits::ExecuteCredits(), Application::Game::GameLoop(), GameUI_CharacterQuickRecord_Draw(), GameUI_DrawCharacterSelectionFrame(), GameUI_DrawHiredNPCs(), GameUI_DrawItemInfo(), GameUI_DrawLifeManaBars(), GameUI_DrawMinimap(), GameUI_DrawNPCPopup(), GameUI_DrawPartySpells(), GameUI_DrawPortraits(), GameUI_DrawRightPanel(), GameUI_DrawRightPanelFrames(), GameUI_DrawRightPanelItems(), GameUI_DrawTorchlightAndWizardEye(), GameUI_StatusBar_Draw(), GameUI_StatusBar_DrawImmediate(), Render::GetBillboardDrawListSize(), AssetsManager::GetBitmap(), AssetsManager::GetImage_Alpha(), AssetsManager::GetImage_ColorKey(), AssetsManager::GetImage_PCXFromFile(), AssetsManager::GetImage_PCXFromIconsLOD(), AssetsManager::GetImage_PCXFromNewLOD(), AssetsManager::GetImage_Solid(), Render::GetParentBillboardID(), AssetsManager::GetSprite(), GUICredits::GUICredits(), GuildDialog(), GUIWindow_Load::GUIWindow_Load(), GUIWindow::HouseDialogManager(), MPlayer::HouseMovieLoop(), Inventory_ItemPopupAndAlchemy(), Vis::is_part_of_selection(), Vis::IsPolygonOccludedByBillboard(), Bitmaps_LOD_Loader::Load(), Sprites_LOD_Loader::Load(), TextureOpenGL::LoadImageData(), TextureD3D::LoadImageData(), LODFile_Sprites::LoadSprite(), LODFile_IconsBitmaps::LoadTextureFromLOD(), GUIWindow_MainMenu::Loop(), MainMenuLoad_Loop(), Application::Menu::MenuLoop(), Engine::MM7_Initialize(), MonsterPopup_Draw(), ODM_LoadAndInitialize(), Application::GameWindowHandler::OnActivated(), WinApiWindow::OnOSMenu(), Application::GameWindowHandler::OnPaint(), OnPaperdollLeftClick(), Application::GameWindowHandler::OnScreenshot(), OnSelectShopDialogueOption(), PartyCreationUI_LoopInternal(), Vis::PickBillboards_Keyboard(), Vis::PickBillboards_Mouse(), Chest::PlaceItems(), MPlayer::PlayFullscreenMovie(), ArcomageGame::PrepareArcomage(), RenderOpenGL::PrepareDecorationsRenderList_ODM(), Render::PrepareDecorationsRenderList_ODM(), PrepareToLoadBLV(), RenderOpenGL::Present(), Present_NoColorKey(), Render::PresentBlackScreen(), Mouse::ReadCursorWithItem(), SpellFxRenderer::RenderSpecialEffects(), Render::RenderTerrainD3D(), BLVRenderParams::Reset(), SaveGame(), Engine::SecondaryInitialization(), Player::SetBeacon(), ShowMM7IntroVideo_and_LoadingScreen(), SimpleHouseDialog(), LightmapBuilder::StackLight_TerrainFace(), TavernDialog(), Render::TexturePixelRotateDraw(), TownHallDialog(), RenderBase::TransformBillboardsAndSetPalettesODM(), TurnChange(), UI_DrawSaveLoad(), UI_OnMouseRightClick(), UIShop_Buy_Identify_Repair(), GUIWindow_LloydsBook::Update(), GUIWindow_AutonotesBook::Update(), GUIWindow_TownPortalBook::Update(), GUIWindow_QuestBook::Update(), GUIWindow_CalendarBook::Update(), GUIWindow_JournalBook::Update(), GUIWindow_QuickReference::Update(), GUIWindow_Spellbook::Update(), GUIWindow_CharacterRecord::Update(), GUIWindow_MapBook::Update(), GUIWindow_Save::Update(), GUIWindow_Dialogue::Update(), GUIWindow_Travel::Update(), GUIWindow_MainMenu::Update(), GUIWindow_Rest::Update(), GUICredits::Update(), GUIWindow_PartyCreation::Update(), GUIWindow_Chest::Update(), GUIWindow_GameMenu::Update(), GUIWindow_Inventory_CastSpell::Update(), GUIWindow_Transition::Update(), GUIWindow_RestWindow::Update(), GUIWindow_GenericDialogue::Update(), GUIWindow_GameOptions::Update(), GUIWindow_Load::Update(), GUIWindow_BooksButtonOverlay::Update(), GUIWindow_GameKeyBindings::Update(), GUIWindow_GameVideoOptions::Update(), GUIWindow_DebugMenu::Update(), OnButtonClick::Update(), OnButtonClick2::Update(), OnButtonClick3::Update(), OnButtonClick4::Update(), OnSaveLoad::Update(), OnCancel::Update(), OnCancel2::Update(), OnCancel3::Update(), WeaponShopWares(), TextureD3D::~TextureD3D() и TextureOpenGL::~TextureOpenGL().

◆ uNumDecorationsDrawnThisFrame

◆ pBillboardRenderList

◆ uNumBillboardsToDraw

◆ uNumSpritesDrawnThisFrame

◆ array_507D30

◆ terrain_block_scale

const int terrain_block_scale = 512

См. определение в файле RenderOpenGL.cpp строка 1119

Используется в RenderOpenGL::DrawTerrainPolygon() и RenderOpenGL::RenderTerrainD3D().

◆ terrain_height_scale

const int terrain_height_scale = 32

См. определение в файле RenderOpenGL.cpp строка 1120

Используется в RenderOpenGL::DrawTerrainPolygon().

◆ ogl_draw_buildings_vertices

RenderVertexSoft ogl_draw_buildings_vertices[20]

См. определение в файле RenderOpenGL.cpp строка 2017

Используется в RenderOpenGL::DrawBuildingsD3D() и RenderOpenGL::DrawPolygon().

Party::vPosition
Vec3_int_ vPosition
Definition: Party.h:250
Party::y_rotation_granularity
int y_rotation_granularity
Definition: Party.h:242
Party::sRotationX
int sRotationX
Definition: Party.h:252
Party::sEyelevel
int sEyelevel
Definition: Party.h:239
game_viewport_width
unsigned int game_viewport_width
Definition: mm7_data.cpp:194
game_viewport_x
int game_viewport_x
Definition: mm7_data.cpp:196
game_viewport_height
unsigned int game_viewport_height
Definition: mm7_data.cpp:195
game_viewport_y
int game_viewport_y
Definition: mm7_data.cpp:197
alpha
GLfloat GLfloat GLfloat alpha
Definition: SDL_opengl_glext.h:415
pParty
Party * pParty
Definition: Party.cpp:30
glLoadIdentity
GLAPI void GLAPIENTRY glLoadIdentity(void)
glViewport
GLAPI void GLAPIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
glScalef
GLAPI void GLAPIENTRY glScalef(GLfloat x, GLfloat y, GLfloat z)
window
EGLSurface EGLNativeWindowType * window
Definition: SDL_egl.h:1580
f
GLfloat f
Definition: SDL_opengl_glext.h:1873
blue
GLbyte GLbyte blue
Definition: SDL_opengl_glext.h:382
green
GLbyte green
Definition: SDL_opengl_glext.h:382
game_viewport_w
int game_viewport_w
Definition: mm7_data.cpp:199
uint
unsigned int uint
Definition: MM7.h:4
glMatrixMode
GLAPI void GLAPIENTRY glMatrixMode(GLenum mode)
IndoorCameraD3D::GetFarClip
float GetFarClip() const
Definition: IndoorCameraD3D.cpp:159
IndoorCameraD3D::GetNearClip
float GetNearClip() const
Definition: IndoorCameraD3D.cpp:146
pIndoorCameraD3D
IndoorCameraD3D * pIndoorCameraD3D
Definition: IndoorCameraD3D.cpp:21
game_viewport_z
int game_viewport_z
Definition: mm7_data.cpp:198
Party::sRotationY
int sRotationY
Definition: Party.h:251
glOrtho
GLAPI void GLAPIENTRY glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val)