@@ -8,7 +8,7 @@ Renderer::Renderer(int width, int height)
8
8
}
9
9
10
10
Renderer::~Renderer () {
11
- glDeleteProgram (shaderProgram );
11
+ glDeleteProgram (cellShaderProgram );
12
12
glDeleteProgram (gridShaderProgram);
13
13
glDeleteProgram (debugOverlayShaderProgram);
14
14
glDeleteBuffers (1 , &cellsVBO);
@@ -25,7 +25,10 @@ void Renderer::SetCamera(const Camera& camera) {
25
25
void Renderer::SetGameController (GameController* gameController) {
26
26
pGameController = gameController;
27
27
LoadShaders ();
28
- InitializeVBOs ();
28
+
29
+ InitializeCellsVBOs ();
30
+ InitializeGridVBOs ();
31
+
29
32
uiController = UIController (pGameController);
30
33
uiController.InitializeUI ();
31
34
}
@@ -36,7 +39,7 @@ void Renderer::SetupOpenGL() {
36
39
GL_CHECK (glViewport (0 , 0 , width, height));
37
40
}
38
41
39
- void Renderer::InitializeVBOs () {
42
+ void Renderer::InitializeCellsVBOs () {
40
43
if (!pGameController) return ;
41
44
int gridWidth = pGameController->getGridWidth ();
42
45
int gridHeight = pGameController->getGridHeight ();
@@ -102,8 +105,6 @@ void Renderer::InitializeVBOs() {
102
105
// Îòâÿçûâàåì áóôåðû è VAO
103
106
GL_CHECK (glBindBuffer (GL_ARRAY_BUFFER, 0 ));
104
107
GL_CHECK (glBindVertexArray (0 ));
105
-
106
- InitializeGridVBOs ();
107
108
}
108
109
109
110
void Renderer::InitializeGridVBOs () {
@@ -116,7 +117,7 @@ void Renderer::InitializeGridVBOs() {
116
117
117
118
// Îïðåäåëåíèå øàãîâ äëÿ äîïîëíèòåëüíûõ ëèíèé
118
119
int minorStep = 10 ; // Íàïðèìåð, ëèíèè ÷åðåç êàæäûå 10 åäèíèö
119
- int majorStep = 50 ; // Íàïðèìåð, áîëåå çàìåòíûå ëèíèè ÷åðåç êàæäûå 50 åäèíèö
120
+ int majorStep = 100 ; // Íàïðèìåð, áîëåå çàìåòíûå ëèíèè ÷åðåç êàæäûå 50 åäèíèö
120
121
121
122
// Ñîçäàíèå ñåòêè
122
123
for (int y = 0 ; y <= gridHeight; ++y) {
@@ -162,7 +163,7 @@ void Renderer::Draw() {
162
163
163
164
DrawCells ();
164
165
// Îòðèñîâêà ñåòêè è êëåòîê
165
- if (showGrid )DrawGrid ();
166
+ if (pGameController-> getShowGrid () )DrawGrid ();
166
167
// Òåïåðü èñïîëüçóåì UIController äëÿ îòðèñîâêè UI
167
168
uiController.DrawUI ();
168
169
@@ -179,12 +180,12 @@ void Renderer::DrawGrid() {
179
180
// Ïåðåäàåì ìàòðèöû ïðîåêöèè è âèäà â øåéäåðû
180
181
GLuint projectionLoc = glGetUniformLocation (gridShaderProgram, " projection" );
181
182
GLuint viewLoc = glGetUniformLocation (gridShaderProgram, " view" );
182
- GLuint cameraDistanceLoc = glGetUniformLocation (gridShaderProgram, " cameraDistance" ); // Íîâàÿ uniform äëÿ äèñòàíöèè êàìåðû
183
+ GLuint cameraDistanceLoc = glGetUniformLocation (gridShaderProgram, " cameraDistance" ); // uniform äëÿ äèñòàíöèè êàìåðû
183
184
184
185
GL_CHECK (glUniformMatrix4fv (projectionLoc, 1 , GL_FALSE, camera.GetProjectionMatrix ()));
185
186
GL_CHECK (glUniformMatrix4fv (viewLoc, 1 , GL_FALSE, camera.GetViewMatrix ()));
186
187
187
- float cameraDistance = camera.GetDistance (); // Ïðåäïîëàãàåì, ÷òî ó êàìåðû åñòü ìåòîä äëÿ ïîëó÷åíèÿ ðàññòîÿíèÿ
188
+ float cameraDistance = camera.GetDistance ();
188
189
GL_CHECK (glUniform1f (cameraDistanceLoc, cameraDistance));
189
190
190
191
// Ñâÿçûâàåì VAO ñåòêè
@@ -217,12 +218,12 @@ void Renderer::DrawCells() {
217
218
GL_CHECK (glUnmapBuffer (GL_ARRAY_BUFFER));
218
219
}
219
220
220
- GL_CHECK (glUseProgram (shaderProgram ));
221
+ GL_CHECK (glUseProgram (cellShaderProgram ));
221
222
222
223
// Óñòàíàâëèâàåì uniform ïåðåìåííûå
223
- GLuint projectionLoc = glGetUniformLocation (shaderProgram , " projection" );
224
- GLuint viewLoc = glGetUniformLocation (shaderProgram , " view" );
225
- GLuint cellSizeLoc = glGetUniformLocation (shaderProgram , " cellSize" );
224
+ GLuint projectionLoc = glGetUniformLocation (cellShaderProgram , " projection" );
225
+ GLuint viewLoc = glGetUniformLocation (cellShaderProgram , " view" );
226
+ GLuint cellSizeLoc = glGetUniformLocation (cellShaderProgram , " cellSize" );
226
227
227
228
GL_CHECK (glUniformMatrix4fv (projectionLoc, 1 , GL_FALSE, camera.GetProjectionMatrix ()));
228
229
GL_CHECK (glUniformMatrix4fv (viewLoc, 1 , GL_FALSE, camera.GetViewMatrix ()));
@@ -304,7 +305,7 @@ void main()
304
305
shaderManager.loadVertexShader (" cellVertexShader" , vertexShaderSource.c_str ());
305
306
shaderManager.loadFragmentShader (" cellFragmentShader" , fragmentShaderSource.c_str ());
306
307
shaderManager.linkProgram (" cellShaderProgram" , " cellVertexShader" , " cellFragmentShader" );
307
- shaderProgram = shaderManager.getProgram (" cellShaderProgram" );
308
+ cellShaderProgram = shaderManager.getProgram (" cellShaderProgram" );
308
309
309
310
}
310
311
@@ -335,7 +336,7 @@ void main()
335
336
drawMinor = (cameraDistance > 100.0) ? 0.0 : 1.0; // Ñàìûå ìåëêèå ëèíèè âèäíû, åñëè êàìåðà áëèæå 100 åäèíèö
336
337
337
338
// Óñòàíàâëèâàåì âèäèìîñòü äëÿ ñðåäíèõ ëèíèé
338
- drawMedium = (cameraDistance > 150 .0) ? 0.0 : 1.0; // Ñðåäíèå ëèíèè âèäíû, åñëè êàìåðà áëèæå 150 åäèíèö
339
+ drawMedium = (cameraDistance > 250 .0) ? 0.0 : 1.0; // Ñðåäíèå ëèíèè âèäíû, åñëè êàìåðà áëèæå 150 åäèíèö
339
340
}
340
341
)" ;
341
342
@@ -375,9 +376,5 @@ void Renderer::RebuildGameField() {
375
376
glDeleteBuffers (1 , &cellInstanceVBO);
376
377
glDeleteBuffers (1 , &gridVBO);
377
378
378
- InitializeVBOs (); // Ïåðåñòðàèâàåì áóôåðû
379
- }
380
-
381
- void Renderer::initializeUI () {
382
-
379
+ InitializeGridVBOs (); // Ïåðåñòðàèâàåì áóôåðû
383
380
}
0 commit comments