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)