- WinMain
// SEKCJA 1 - PLIKI NAGŁÓWKOWE
// ------------------------------------------------------------------------------------------------------------------------
#include "stdatx.h" // Załączenie wszystkich potrzebnych nagłówków w pliku
// SEKCJA 2 - DYREKTYWY PREPROCESORA (#DEFINE, #TYPEDEF ITP.)
// ------------------------------------------------------------------------------------------------------------------------
// Makro błędu aplikacji
#define APPLICATION_ERROR MessageBox(0, L"Błąd Aplikacji", L"Nieznany błąd!", MB_OK);
#define M_PI 3.14159265358979323846
// SEKCJA 3 - PROTOTYPY FUNKCJI
// ------------------------------------------------------------------------------------------------------------------------
void WybierzScene();
void SwapWindow();
bool CheckEqual(CoknoGL* obiekt);
void RysujMain(CoknoGL* obiekt);
void RysujBlank(CoknoGL* obiekt);
void RysujHad(CoknoGL* obiekt);
void RysujReset(CoknoGL* obiekt);
void RysujSms(CoknoGL* obiekt);
void RysujHsd(CoknoGL* obiekt);
void RysujHsdCen(CoknoGL* obiekt);
void RysujDte(CoknoGL* obiekt);
void RysujTest(CoknoGL* obiekt);
void RysujFlcs(CoknoGL* obiekt);
void RysujKanaly(CoknoGL* obiekt);
void CheckLoadParams(void);
std::vector<glm::mat4> stosmacierzy;
unsigned short usStanBelek[9] = { 0 };
DWORD WINAPI WatekSieci(LPVOID lpParam);
// SEKCJA 4 - DEKLARACJE ZMIENNYCH GLOBALNYCH
// ------------------------------------------------------------------------------------------------------------------------
CoknoGL* okno1; // Uchwyt do okna
CoknoGL* okno2;
DWORD ThreadID;
HANDLE hUchwytWatku;
Cflightdata flightdata;
float fAngle = 0.0;
struct FPOINT
{
float x;
float y;
};
std::vector<FPOINT> fWayPoints;
// SEKCJA 5 - FUNKCJA GŁÓWNA APLIKACJI
// ------------------------------------------------------------------------------------------------------------------------
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
hUchwytWatku = CreateThread(
NULL,
0,
WatekSieci,
&flightdata,
0,
&ThreadID
);
okno1 = new CoknoGL(MFD_MAIN);
okno1->UtworzOkno();
okno2 = new CoknoGL(MFD_BLANK);
okno2->UtworzOkno();
glm::mat4 orto;
orto = glm::ortho(0.0, 572.0, 0.0, 574.0);
glm::mat4 macierz_przycisku_beta = glm::translate(orto, glm::vec3(-67.0, 0.0, 0.0));
stosmacierzy.push_back(macierz_przycisku_beta);
macierz_przycisku_beta = glm::translate(orto, glm::vec3(-134.0, 0.0, 0.0));
stosmacierzy.push_back(macierz_przycisku_beta);
glm::mat4 macierz_samolotuhsd = glm::translate(orto, glm::vec3(0.0, 90.0, 0.0));
stosmacierzy.push_back(macierz_samolotuhsd);
glm::mat4 macierz_hsdobrot = glm::rotate(orto, fAngle, glm::vec3(0.0, 0.0, 1.0));
stosmacierzy.push_back(orto);
FPOINT P1, P2, P3, P4;
P1.x = 10.0f;
P1.y = 0.0f;
P2.x = 200.0f;
P2.y = 200.0f;
P3.x = -135.0f;
P3.y = -50.0f;
P4.x = -50.0f;
P4.y = 303.0f;
Sprite frame(0.0, 0.0, 0.0, 0.0, 572.0, 574.0); //0
Sprite main_menu(70.0, 80.0, 0.0, 0.0, 434.0, 433.0); //1
Sprite submenu_blank(70.0, 80.0, 0.0, 0.0, 434.0, 433.0); //2
Sprite submenu_reset(70.0, 80.0, 0.0, 0.0, 434.0, 433.0); //3
Sprite submenu_sms(70.0, 80.0, 0.0, 0.0, 434.0, 433.0); //4
Sprite submenu_hsd(70.0, 80.0, 0.0, 0.0, 434.0, 433.0); //5
Sprite submenu_dte(70.0, 80.0, 0.0, 0.0, 434.0, 433.0); //6
Sprite submenu_test(70.0, 80.0, 0.0, 0.0, 434.0, 433.0); //7
Sprite submenu_flcs(70.0, 80.0, 0.0, 0.0, 434.0, 433.0); //8
Sprite submenu_flir(70.0, 80.0, 0.0, 0.0, 434.0, 433.0); //9
Sprite submenu_tfr(70.0, 80.0, 0.0, 0.0, 434.0, 433.0); //10
Sprite submenu_wpn(70.0, 80.0, 0.0, 0.0, 434.0, 433.0); //11
Sprite submenu_tgp(70.0, 80.0, 0.0, 0.0, 434.0, 433.0); //12
Sprite submenu_fcr(70.0, 80.0, 0.0, 0.0, 434.0, 433.0); //13
Sprite napis_fcr_i(0.0, 0.0, 0.0, 0.0, 400.0, 400.0); //13
Sprite napis_fcr(332.0, 86.0, 8.0, 88.0, 60.0, 26.0); //14
Sprite napis_blank_i(0.0, 0.0, 0.0, 0.0, 400.0, 400.0); //15
Sprite napis_blank(332.0, 86.0, 200.0, 212.0, 60.0, 26.0); //16
Sprite napis_had_i(0.0, 0.0, 0.0, 0.0, 400.0, 400.0); //17
Sprite napis_had(336.0, 85.0, 134.0, 12.0, 38.0, 26.0); //18
Sprite napis_sms_i(0.0, 0.0, 0.0, 0.0, 400.0, 400.0); //19
Sprite napis_sms(332.0, 83.0, 384.0, 90.0, 60.0, 26.0); //20
Sprite napis_hsd_i(0.0, 0.0, 0.0, 0.0, 400.0, 400.0); //21
Sprite napis_hsd(332.0, 81.0, 384.0, 156.0, 60.0, 26.0); //22
Sprite napis_dte_i(0.0, 0.0, 0.0, 0.0, 400.0, 400.0); //23
Sprite napis_dte(332.0, 83.0, 384.0, 220.0, 60.0, 26.0); //24
Sprite napis_test_i(0.0, 0.0, 0.0, 0.0, 400.0, 400.0); //25
Sprite napis_test(328.0, 82.0, 372.0, 286.0, 60.0, 26.0); //26
Sprite napis_flcs_i(0.0, 0.0, 0.0, 0.0, 400.0, 400.0); //27
Sprite napis_flcs(328.0, 84.0, 372.0, 348.0, 60.0, 26.0); //28
Sprite napis_flir_i(332.0, 86.0, 134.0, 12.0, 60.0, 26.0); //29
Sprite napis_flir(332.0, 86.0, 134.0, 12.0, 60.0, 26.0); //30
Sprite napis_tfr_i(332.0, 86.0, 134.0, 12.0, 60.0, 26.0); //31
Sprite napis_tfr(332.0, 86.0, 134.0, 12.0, 60.0, 26.0); //32
Sprite napis_wpn_i(332.0, 86.0, 134.0, 12.0, 60.0, 26.0); //33
Sprite napis_wpn(332.0, 86.0, 134.0, 12.0, 60.0, 26.0); //34
Sprite napis_tgp_i(332.0, 86.0, 134.0, 12.0, 60.0, 26.0); //35
Sprite napis_tgp(332.0, 86.0, 134.0, 12.0, 60.0, 26.0); //36
Sprite submenu_hsd_rings(70.0, 80.0, 0.0, 0.0, 434.0, 433.0);
Sprite submenu_hsd_aircraft(265.0, 164.0, 0.0, 510.0, 40.0, 60.0);
Sprite submenu_hsd_rings2(73.0, 70.0, 0.0, 0.0, 434.0, 433.0);
Sprite submenu_hsd_rings3(70.0, -10.0, 0.0, 0.0, 434.0, 433.0); // 33
Sprite submenu_hsd_waypoints(-11.0, -13.0, 50.0, 510.0, 18.0, 60.0);
Sprite submenu_hsd_240(81.0, 388.0, 107, 501.0, 35.0, 18.0); //34
Sprite submenu_hsd_120(81.0, 388.0, 107, 519.0, 35.0, 18.0);
Sprite submenu_hsd_60(81.0, 388.0, 107, 538.0, 35.0, 18.0);
Sprite submenu_hsd_30(81.0, 388.0, 149, 501.0, 35.0, 18.0);
Sprite submenu_hsd_15(81.0, 388.0, 149, 520.0, 35.0, 18.0); //38
Sprite submenu_hsd_8(81.0, 388.0, 149, 538.0, 35.0, 18.0); //39
Sprite submenu_sms_wpn(0.0, 0.0, 0.0, 0.0, 88.0, 18.0);
Sprite submenu_sms_wpn2(0.0, 0.0, 0.0, 20.0, 88.0, 18.0);
Sprite submenu_sms_wpn3(0.0, 0.0, 0.0, 37.0, 88.0, 18.0);
Sprite submenu_sms_wpn4(0.0, 0.0, 0.0, 54.0, 88.0, 18.0);
Sprite submenu_sms_wpn5(0.0, 0.0, 0.0, 71.0, 88.0, 18.0);
Sprite submenu_sms_wpn6(0.0, 0.0, 0.0, 218, 88.0, 18.0);
Sprite submenu_sms_wpn7(0.0, 0.0, 0.0, 236, 88.0, 18.0);
Sprite submenu_sms_wpn8(0.0, 0.0, 0.0, 255, 88.0, 18.0);
Sprite submenu_sms_wpn9(0.0, 0.0, 0.0, 272, 88.0, 18.0);
Sprite submenu_sms_wpn10(0.0, 0.0, 0.0, 272, 88.0, 18.0);
Sprite submenu_sms_wpn11(0.0, 0.0, 0.0, 307, 88.0, 18.0);
Sprite submenu_sms_wpn12(0.0, 0.0, 0.0, 324, 88.0, 18.0);
Sprite submenu_sms_wpn13(0.0, 0.0, 0.0, 342, 88.0, 18.0);
Sprite submenu_sms_wpn14(0.0, 0.0, 0.0, 359, 88.0, 18.0);
Sprite submenu_sms_wpn15(0.0, 0.0, 0.0, 376, 88.0, 18.0);
Sprite submenu_sms_wpn16(0.0, 0.0, 0.0, 393, 88.0, 18.0);
Sprite submenu_sms_wpn17(0.0, 0.0, 0.0, 409, 88.0, 18.0);
Sprite submenu_sms_wpn18(0.0, 0.0, 0.0, 425, 88.0, 18.0);
Sprite submenu_sms_wpn19(0.0, 0.0, 0.0, 444, 88.0, 18.0);
okno1->DodajSprite(frame, "ramka.jpg");
okno1->DodajSprite(main_menu, "main_men.jpg");
okno1->DodajSprite(submenu_blank, "sub_blank.jpg");
okno1->DodajSprite(submenu_reset, "sub_reset.jpg");
okno1->DodajSprite(submenu_sms, "sub_sms.jpg");
okno1->DodajSprite(submenu_hsd, "sub_hsd.jpg");
okno1->DodajSprite(submenu_dte, "sub_dte.jpg");
okno1->DodajSprite(submenu_test, "sub_test.jpg");
okno1->DodajSprite(submenu_flcs, "sub_flcs.jpg");
okno1->DodajSprite(submenu_flir, "n");
okno1->DodajSprite(submenu_tfr, "n");
okno1->DodajSprite(submenu_wpn, "n");
okno1->DodajSprite(submenu_tgp, "n");
okno1->DodajSprite(submenu_fcr, "n");
okno1->DodajSprite(napis_fcr_i, "napisy_1");
okno1->DodajSprite(napis_fcr, "n");
okno1->DodajSprite(napis_blank_i, "n");
okno1->DodajSprite(napis_blank, "n");
okno1->DodajSprite(napis_had_i, "n");
okno1->DodajSprite(napis_had, "n");
okno1->DodajSprite(napis_sms_i, "n");
okno1->DodajSprite(napis_sms, "n");
okno1->DodajSprite(napis_hsd_i, "n");
okno1->DodajSprite(napis_hsd, "n");
okno1->DodajSprite(napis_dte_i, "n");
okno1->DodajSprite(napis_dte, "n");
okno1->DodajSprite(napis_test_i, "n");
okno1->DodajSprite(napis_test, "n");
okno1->DodajSprite(napis_flcs_i, "sub_hsd3.jpg");
okno1->DodajSprite(napis_flcs, "sub_hsd4.jpg");
okno1->DodajSprite(submenu_hsd_rings, "sub_hsd2.bmp");
okno1->DodajSprite(submenu_hsd_aircraft, "n");
okno1->DodajSprite(submenu_hsd_rings2, "n");
okno1->DodajSprite(submenu_hsd_rings3, "n");
okno1->DodajSprite(submenu_hsd_240, "n");
okno1->DodajSprite(submenu_hsd_120, "n");
okno1->DodajSprite(submenu_hsd_60, "n");
okno1->DodajSprite(submenu_hsd_30, "n");
okno1->DodajSprite(submenu_hsd_15, "n");
okno1->DodajSprite(submenu_hsd_8, "sub_hsd5.bmp");
okno1->DodajSprite(submenu_hsd_waypoints, "sub_hsd5.jpg"); //40
okno1->DodajSprite(submenu_sms_wpn, "sub_sms2.jpg"); //41
okno1->DodajSprite(submenu_sms_wpn2, "n"); //42
okno1->DodajSprite(submenu_sms_wpn3, "n"); //43
okno1->DodajSprite(submenu_sms_wpn4, "n"); //44
okno1->DodajSprite(submenu_sms_wpn5, "n"); //45
okno1->DodajSprite(submenu_sms_wpn6, "n"); //46
okno1->DodajSprite(submenu_sms_wpn7, "n"); //47
okno1->DodajSprite(submenu_sms_wpn8, "n"); //48
okno1->DodajSprite(submenu_sms_wpn9, "n"); //49
okno1->DodajSprite(submenu_sms_wpn10, "n"); //49
// okno1->DodajSprite(submenu_sms_wpn11, "n"); //50
/* okno1->DodajSprite(submenu_sms_wpn12, "n"); //51 50 - wszystko działa ok
okno1->DodajSprite(submenu_sms_wpn13, "n"); //52 51 - program się sypie (error 1282)
okno1->DodajSprite(submenu_sms_wpn14, "n"); //53
okno1->DodajSprite(submenu_sms_wpn15, "n"); //54
okno1->DodajSprite(submenu_sms_wpn16, "n"); //55
okno1->DodajSprite(submenu_sms_wpn17, "n"); //56
okno1->DodajSprite(submenu_sms_wpn18, "n"); //57
okno1->DodajSprite(submenu_sms_wpn19, "n"); //58 */
okno1->ZainicjalizujGL();
okno2->ZainicjalizujGL();
int nEr = glGetError();
MSG msg;
bool finish = FALSE;
while (!finish)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
if (msg.message == WM_QUIT)
{
finish = TRUE;
}
}
WybierzScene();
if (flightdata.run == TRUE)
{
SetWindowText(okno1->hUchwytOkna, L"Application MFD simulator - FALCON BMS 4.32 is running...");
SetWindowText(okno2->hUchwytOkna, L"Application MFD simulator - FALCON BMS 4.32 is running...");
}
else
{
SetWindowText(okno1->hUchwytOkna, L"Application MFD simulator - FALCON BMS 4.32 is NOT running...");
SetWindowText(okno2->hUchwytOkna, L"Application MFD simulator - FALCON BMS 4.32 is NOT running...");
}
CheckLoadParams();
fAngle += 0.5f;
}
delete okno1;
delete okno2;
CloseHandle(hUchwytWatku);
return 0;
}
// SEKCJA 6 - POZOSTAŁE FUNKCJE (DEFINICJE)
// ------------------------------------------------------------------------------------------------------------------------
void WybierzScene()
{
switch (okno1->stan)
{
case MFD_MAIN:
RysujMain(okno1);
break;
case MFD_BLANK:
RysujBlank(okno1);
break;
case MFD_HAD:
RysujHad(okno1);
break;
case MFD_RESET:
RysujReset(okno1);
break;
case MFD_SMS:
RysujSms(okno1);
break;
case MFD_HSD:
RysujHsd(okno1);
break;
case MFD_HSD_CEN:
RysujHsdCen(okno1);
break;
case MFD_DTE:
RysujDte(okno1);
break;
case MFD_TEST:
RysujTest(okno1);
break;
case MFD_FLCS:
RysujFlcs(okno1);
break;
default:
break;
}
switch (okno2->stan)
{
case MFD_MAIN:
RysujMain(okno2);
break;
case MFD_BLANK:
RysujBlank(okno2);
break;
case MFD_HAD:
RysujHad(okno2);
break;
case MFD_RESET:
RysujReset(okno2);
break;
case MFD_SMS:
RysujSms(okno2);
break;
case MFD_HSD:
RysujHsd(okno2);
break;
case MFD_HSD_CEN:
RysujHsdCen(okno2);
break;
case MFD_DTE:
RysujDte(okno2);
break;
case MFD_TEST:
RysujTest(okno2);
break;
case MFD_FLCS:
RysujFlcs(okno2);
break;
default:
break;
}
if ((okno1->swap == MFD_SWAP) || (okno2->swap == MFD_SWAP)) SwapWindow();
}
void SwapWindow()
{
E_STAN stan, alfa, beta, gamma;
int active;
stan = okno1->stan;
alfa = okno1->alfachannel;
beta = okno1->betachannel;
gamma = okno1->gammachannel;
active = okno1->ActiveChannel;
okno1->stan = okno2->stan;
okno1->alfachannel = okno2->betachannel;
okno1->betachannel = okno2->betachannel;
okno1->gammachannel = okno2->gammachannel;
okno1->ActiveChannel = okno2->ActiveChannel;
okno2->stan = stan;
okno2->alfachannel = alfa;
okno2->betachannel = beta;
okno2->gammachannel = gamma;
okno2->ActiveChannel = active;
okno1->swap = MFD_BLANK;
okno2->swap = MFD_BLANK;
}
bool CheckEqual()
{
if (okno1->stan == MFD_MAIN && okno2->stan == MFD_MAIN)
{
okno1->TakieSamoMenu = TRUE;
return true;
}
okno1->TakieSamoMenu = FALSE;
return false;
}
void RysujMain(CoknoGL* obiekt)
{
obiekt->OproznijBufor();
obiekt->RenderujKlatke(1, 2);
obiekt->RenderujRamke(0);
RysujKanaly(obiekt);
obiekt->ZamienBufor();
}
void RysujBlank(CoknoGL* obiekt)
{
obiekt->OproznijBufor();
obiekt->RenderujKlatke(2, 3);
obiekt->RenderujRamke(0);
RysujKanaly(obiekt);
obiekt->ZamienBufor();
}
void RysujHad(CoknoGL* obiekt)
{
obiekt->OproznijBufor();
obiekt->RenderujKlatke(2, 3);
obiekt->RenderujRamke(0);
RysujKanaly(obiekt);
obiekt->ZamienBufor();
}
void RysujReset(CoknoGL* obiekt)
{
obiekt->OproznijBufor();
obiekt->RenderujKlatke(3, 4);
obiekt->RenderujRamke(0);
RysujKanaly(obiekt);
obiekt->ZamienBufor();
}
void RysujSms(CoknoGL* obiekt)
{
glm::mat4 poz_1_1 = glm::translate(stosmacierzy[3], glm::vec3(110, 140, 0));
glm::mat4 poz_1_2 = glm::translate(stosmacierzy[3], glm::vec3(110, 160, 0));
glm::mat4 poz_2_1 = glm::translate(stosmacierzy[3], glm::vec3(110, 200, 0));
glm::mat4 poz_2_2 = glm::translate(stosmacierzy[3], glm::vec3(110, 220, 0));
glm::mat4 poz_3_1 = glm::translate(stosmacierzy[3], glm::vec3(140, 255, 0));
glm::mat4 poz_3_2 = glm::translate(stosmacierzy[3], glm::vec3(140, 275, 0));
glm::mat4 poz_3_3 = glm::translate(stosmacierzy[3], glm::vec3(140, 295, 0));
glm::mat4 poz_4_1 = glm::translate(stosmacierzy[3], glm::vec3(175, 318, 0));
glm::mat4 poz_4_2 = glm::translate(stosmacierzy[3], glm::vec3(175, 338, 0));
glm::mat4 poz_4_3 = glm::translate(stosmacierzy[3], glm::vec3(175, 358, 0));
glm::mat4 poz_5_1 = glm::translate(stosmacierzy[3], glm::vec3(250, 410, 0));
glm::mat4 poz_5_2 = glm::translate(stosmacierzy[3], glm::vec3(250, 430, 0));
glm::mat4 poz_5_3 = glm::translate(stosmacierzy[3], glm::vec3(250, 450, 0));
glm::mat4 poz_6_1 = glm::translate(stosmacierzy[3], glm::vec3(325, 318, 0));
glm::mat4 poz_6_2 = glm::translate(stosmacierzy[3], glm::vec3(325, 338, 0));
glm::mat4 poz_6_3 = glm::translate(stosmacierzy[3], glm::vec3(325, 358, 0));
glm::mat4 poz_7_1 = glm::translate(stosmacierzy[3], glm::vec3(360, 255, 0));
glm::mat4 poz_7_2 = glm::translate(stosmacierzy[3], glm::vec3(360, 275, 0));
glm::mat4 poz_7_3 = glm::translate(stosmacierzy[3], glm::vec3(360, 295, 0));
glm::mat4 poz_8_1 = glm::translate(stosmacierzy[3], glm::vec3(390, 200, 0));
glm::mat4 poz_8_2 = glm::translate(stosmacierzy[3], glm::vec3(390, 220, 0));
glm::mat4 poz_9_1 = glm::translate(stosmacierzy[3], glm::vec3(390, 140, 0));
glm::mat4 poz_9_2 = glm::translate(stosmacierzy[3], glm::vec3(390, 160, 0));
int i = 42;
obiekt->OproznijBufor();
obiekt->RenderujKlatke(4, 5);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_1_1);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_1_2);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_2_1);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_2_2);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_3_1);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_3_2);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_3_3);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_4_1);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_4_2);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_4_3);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_5_1);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_5_2);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_5_3);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_6_1);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_6_2);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_6_3);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_7_1);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_7_2);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_7_3);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_8_1);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_8_2);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_9_1);
obiekt->RenderujPojedynczyObiekt(i, 41, poz_9_2);
obiekt->RenderujPojedynczyObiekt(42, 41);
//obiekt->RenderujRamke(0);
RysujKanaly(obiekt);
obiekt->ZamienBufor();
}
void RysujHsd(CoknoGL* obiekt)
{
float diff = fAngle - flightdata.heading;
if ((diff > 0.5f) || (diff < -0.5f))
{
if ((flightdata.heading - fAngle) > 0.0f)
{
fAngle += 0.1f;
}
if ((flightdata.heading - fAngle) < 0.0f)
{
fAngle -= 0.1f;
}
}
obiekt->OproznijBufor();
obiekt->WlaczMieszanie(TRUE);
glm::mat4 orto, orto2;
orto = glm::ortho(-286.0, 278.0, -147.0, 287.0);
orto2 = glm::ortho(-286.0, 278.0, -147.0, 287.0);
orto = glm::rotate(orto, fAngle, glm::vec3(0, 0, -1));
glm::mat4 przesuniecie = glm::translate(stosmacierzy[3], glm::vec3(290.0, 196.5, 0.0));
glm::mat4 obrot = glm::rotate(przesuniecie, fAngle, glm::vec3(0.0, 0.0, -1.0));
glm::mat4 fina = glm::translate(obrot, glm::vec3(-290.0, -196.5, 0.0));
float scale = obiekt->nSkala;
obiekt->RenderujPojedynczyObiekt(33, 28, fina);
obiekt->RenderujPojedynczyObiekt(30, 29);
obiekt->RenderujPojedynczyObiekt(31, 30);
if (scale == 2) obiekt->RenderujPojedynczyObiekt(39, 30);
if (scale == 1) obiekt->RenderujPojedynczyObiekt(38, 30);
if (scale == 0.5) obiekt->RenderujPojedynczyObiekt(37, 30);
if (scale == 0.25) obiekt->RenderujPojedynczyObiekt(36, 30);
if (scale == 0.125) obiekt->RenderujPojedynczyObiekt(35, 30);
if (scale == 0.0625) obiekt->RenderujPojedynczyObiekt(34, 30);
for (int i = 0; i < fWayPoints.size(); i++)
{
float fX = fWayPoints[i].x - flightdata.x;
float fY = fWayPoints[i].y - flightdata.y;
glm::mat4 przesuniecie_wp = glm::translate(orto, glm::vec3(fX*scale, fY*scale, 0.0));
obiekt->RenderujPojedynczyObiekt(40, 30, przesuniecie_wp);
}
if (obiekt->bHsdSubmenu)
{
obiekt->RenderujPojedynczyObiekt(5, 39);
}
else
{
obiekt->RenderujKlatke(5, 6);
}
obiekt->WlaczMieszanie(FALSE);
orto = glm::scale(orto, glm::vec3(scale, scale, 1));
orto2 = glm::scale(orto2, glm::vec3(scale, scale, 1));
obiekt->RenderujLinie(orto, glm::vec3(1, 1, 1), 0, fWayPoints.size(), glm::vec3(1, 1, 1));
obiekt->RenderujLinie(orto2, glm::vec3(0.1529, 0.9215, 0.9059), 19, 2, glm::vec3(1, 1, 1));
obiekt->RenderujLinie(orto2, glm::vec3(0.1529, 0.9215, 0.9059), 21, 2, glm::vec3(1, 1, 1));
obiekt->RenderujLinie(orto2, glm::vec3(0.1529, 0.9215, 0.9059), 23, 2, glm::vec3(1, 1, 1));
obiekt->RenderujRamke(0);
RysujKanaly(obiekt);
obiekt->ZamienBufor();
}
void RysujHsdCen(CoknoGL* obiekt)
{
float diff = fAngle - flightdata.heading;
if ((diff > 0.5f) || (diff < -0.5f))
{
if ((flightdata.heading - fAngle) > 0.0f)
{
fAngle += 0.1f;
}
if ((flightdata.heading - fAngle) < 0.0f)
{
fAngle -= 0.1f;
}
}
glm::mat4 orto, orto2;
orto = glm::ortho(-286.0, 277.0, -280.0, 287.0);
orto2 = glm::ortho(-286.0, 277.0, -280.0, 287.0);
orto = glm::rotate(orto, fAngle, glm::vec3(0, 0, -1));
glm::mat4 przesuniecie = glm::translate(stosmacierzy[3], glm::vec3(290.0, 286.5, 0.0));
glm::mat4 obrot = glm::rotate(przesuniecie, fAngle , glm::vec3(0.0, 0.0, -1.0));
glm::mat4 fina = glm::translate(obrot, glm::vec3(-290.0, -286.5, 0.0));
float scale = obiekt->nSkala;
obiekt->OproznijBufor();
obiekt->WlaczMieszanie(TRUE);
obiekt->RenderujPojedynczyObiekt(32, 30, fina);
obiekt->RenderujPojedynczyObiekt(31, 30, stosmacierzy[2]);
if (scale == 2) obiekt->RenderujPojedynczyObiekt(39, 30);
if (scale == 1) obiekt->RenderujPojedynczyObiekt(38, 30);
if (scale == 0.5) obiekt->RenderujPojedynczyObiekt(37, 30);
if (scale == 0.25) obiekt->RenderujPojedynczyObiekt(36, 30);
if (scale == 0.125) obiekt->RenderujPojedynczyObiekt(35, 30);
if (scale == 0.0625) obiekt->RenderujPojedynczyObiekt(34, 30);
for (int i = 0; i < fWayPoints.size(); i++)
{
float fX = fWayPoints[i].x - flightdata.x;
float fY = fWayPoints[i].y - flightdata.y;
glm::mat4 przesuniecie_wp = glm::translate(orto, glm::vec3(fX*scale, fY*scale, 0.0));
obiekt->RenderujPojedynczyObiekt(40, 30, przesuniecie_wp);
}
if (obiekt->bHsdSubmenu)
{
obiekt->RenderujPojedynczyObiekt(5, 39);
}
else
{
obiekt->RenderujPojedynczyObiekt(2, 40);
}
obiekt->WlaczMieszanie(FALSE);
int nsize = fWayPoints.size();
if (nsize == 1) nsize = 0;
orto = glm::scale(orto, glm::vec3(scale, scale, 1));
orto2 = glm::scale(orto2, glm::vec3(scale, scale, 1));
obiekt->RenderujLinie(orto, glm::vec3(1, 1, 1), 0, fWayPoints.size(), glm::vec3(1, 1, 1));
obiekt->RenderujLinie(orto2, glm::vec3(0.1529, 0.9215, 0.9059), 19, 2, glm::vec3(1, 1, 1));
obiekt->RenderujLinie(orto2, glm::vec3(0.1529, 0.9215, 0.9059), 21, 2, glm::vec3(1, 1, 1));
obiekt->RenderujLinie(orto2, glm::vec3(0.1529, 0.9215, 0.9059), 23, 2, glm::vec3(1, 1, 1));
obiekt->RenderujRamke(0);
RysujKanaly(obiekt);
obiekt->ZamienBufor();
}
void RysujDte(CoknoGL* obiekt)
{
obiekt->OproznijBufor();
obiekt->RenderujKlatke(6, 7);
obiekt->RenderujRamke(0);
RysujKanaly(obiekt);
obiekt->RenderujRamke(0);
obiekt->ZamienBufor();
}
void RysujTest(CoknoGL* obiekt)
{
obiekt->OproznijBufor();
obiekt->RenderujKlatke(7, 8);
obiekt->RenderujRamke(0);
RysujKanaly(obiekt);
obiekt->ZamienBufor();
}
void RysujFlcs(CoknoGL* obiekt)
{
obiekt->OproznijBufor();
obiekt->RenderujKlatke(8, 9);
obiekt->RenderujRamke(0);
RysujKanaly(obiekt);
obiekt->ZamienBufor();
}
void RysujKanaly(CoknoGL* obiekt)
{
obiekt->WlaczMieszanie(TRUE);
switch (obiekt->alfachannel)
{
case MFD_BLANK:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(17, 1);
break;
case MFD_HAD:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(19, 1);
break;
case MFD_SMS:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(21, 1);
break;
case MFD_HSD:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(23, 1);
break;
case MFD_HSD_CEN:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(23, 1);
break;
case MFD_DTE:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(25, 1);
break;
case MFD_TEST:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(27, 1);
break;
case MFD_FLCS:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(29, 1);
break;
default:
obiekt->RenderujPojedynczyObiekt(17, 1);
break;
}
switch (obiekt->betachannel)
{
case MFD_BLANK:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(17, 1, stosmacierzy[0]);
break;
case MFD_HAD:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(19, 1, stosmacierzy[0]);
break;
case MFD_SMS:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(21, 1, stosmacierzy[0]);
break;
case MFD_HSD:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(23, 1, stosmacierzy[0]);
break;
case MFD_HSD_CEN:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(23, 1, stosmacierzy[0]);
break;
case MFD_DTE:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(25, 1, stosmacierzy[0]);
break;
case MFD_TEST:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(27, 1, stosmacierzy[0]);
break;
case MFD_FLCS:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(29, 1, stosmacierzy[0]);
break;
default:
obiekt->RenderujPojedynczyObiekt(17, 1, stosmacierzy[0]);
break;
}
switch (obiekt->gammachannel)
{
case MFD_BLANK:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(17, 1, stosmacierzy[1]);
break;
case MFD_HAD:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(19, 1, stosmacierzy[1]);
break;
case MFD_SMS:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(21, 1, stosmacierzy[1]);
break;
case MFD_HSD:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(23, 1, stosmacierzy[1]);
break;
case MFD_HSD_CEN:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(23, 1, stosmacierzy[1]);
break;
case MFD_DTE:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(25, 1, stosmacierzy[1]);
break;
case MFD_TEST:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(27, 1, stosmacierzy[1]);
break;
case MFD_FLCS:
if (obiekt->ActiveChannel == 1);
obiekt->RenderujPojedynczyObiekt(29, 1, stosmacierzy[1]);
break;
default:
obiekt->RenderujPojedynczyObiekt(17, 1, stosmacierzy[1]);
break;
}
obiekt->WlaczMieszanie(GL_FALSE);
}
void CheckLoadParams(void)
{
if (okno1->bParamsLoaded == TRUE)
{
fWayPoints.clear();
for (int i = 0; i < 9; i++)
{
usStanBelek[i] = okno1->usBelki[i];
}
if (okno1->nCounter > -1)
{
FPOINT fpoint;
for (int i = 0; i < okno1->nCounter; i++)
{
fpoint.x = okno1->xwaypoints[i];
fpoint.y = okno1->ywaypoints[i];
fWayPoints.push_back(fpoint);
//okno1->g_vertex_buffer_data[2*i] = fpoint.x + 292.0f;
//okno1->g_vertex_buffer_data[2*i +1] = fpoint.y + 288.0f;
okno1->g_vertex_buffer_data[2*i] = fpoint.x;
okno1->g_vertex_buffer_data[2*i +1] = fpoint.y;
}
okno1->WypelnijBuffor();
okno2->WypelnijBuffor();
}
}
okno1->bParamsLoaded = FALSE;
}
Definicji i deklaracji okien dialogowych nie wrzucam bo to nie tam na 99% tkwi problem. Myślałem, że przyczyną może być jakieś ograniczenie OpenGL co do ilości deklarowanych buforów, ale zdaje się, że nie ma to znaczenia (ograniczeniem jest pamięć na karcie?). Gdyby ktoś rzucił okiem na kod byłbym bardzo wdzięczny bo sam jestem ciekaw co jest nie tak. Rozdzieliłem na dwa posty z powodu objętości kodu.