61 procedure SwapBuffers; {$IFDEF USE_VIDEO_RECORDING}cdecl{$ELSE}inline{$ENDIF}; |
61 procedure SwapBuffers; {$IFDEF USE_VIDEO_RECORDING}cdecl{$ELSE}inline{$ENDIF}; |
62 procedure SetSkyColor(r, g, b: real); |
62 procedure SetSkyColor(r, g, b: real); |
63 |
63 |
64 {$IFDEF GL2} |
64 {$IFDEF GL2} |
65 procedure UpdateModelviewProjection; |
65 procedure UpdateModelviewProjection; |
|
66 {$ENDIF} |
|
67 |
66 procedure EnableTexture(enable:Boolean); |
68 procedure EnableTexture(enable:Boolean); |
67 {$ENDIF} |
|
68 |
69 |
69 procedure SetTexCoordPointer(p: Pointer;n: Integer); |
70 procedure SetTexCoordPointer(p: Pointer;n: Integer); |
70 procedure SetVertexPointer(p: Pointer;n: Integer); |
71 procedure SetVertexPointer(p: Pointer;n: Integer); |
71 procedure SetColorPointer(p: Pointer;n: Integer); |
72 procedure SetColorPointer(p: Pointer;n: Integer); |
72 procedure BeginWater; |
|
73 procedure EndWater; |
|
74 |
73 |
75 procedure updateViewLimits(); |
74 procedure updateViewLimits(); |
76 |
75 |
77 implementation |
76 implementation |
78 uses uMisc, uConsole, uVariables, uUtils, uTextures, uRender, uRenderUtils, |
77 uses uMisc, uConsole, uVariables, uUtils, uTextures, uRender, uRenderUtils, |
1092 glEnable(GL_BLEND); |
1091 glEnable(GL_BLEND); |
1093 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
1092 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
1094 // disable/lower perspective correction (will not need it anyway) |
1093 // disable/lower perspective correction (will not need it anyway) |
1095 end; |
1094 end; |
1096 |
1095 |
1097 {$IFDEF GL2} |
|
1098 procedure EnableTexture(enable:Boolean); |
1096 procedure EnableTexture(enable:Boolean); |
1099 begin |
1097 begin |
|
1098 {$IFDEF GL2} |
1100 if enable then |
1099 if enable then |
1101 glUniform1i(glGetUniformLocation(shaderMain, pchar('enableTexture')), 1) |
1100 glUniform1i(glGetUniformLocation(shaderMain, pchar('enableTexture')), 1) |
1102 else |
1101 else |
1103 glUniform1i(glGetUniformLocation(shaderMain, pchar('enableTexture')), 0); |
1102 glUniform1i(glGetUniformLocation(shaderMain, pchar('enableTexture')), 0); |
1104 end; |
1103 {$ELSE} |
1105 {$ENDIF} |
1104 if enable then |
|
1105 glEnable(GL_TEXTURE_2D) |
|
1106 else |
|
1107 glDisable(GL_TEXTURE_2D); |
|
1108 {$ENDIF} |
|
1109 end; |
1106 |
1110 |
1107 procedure SetTexCoordPointer(p: Pointer; n: Integer); |
1111 procedure SetTexCoordPointer(p: Pointer; n: Integer); |
1108 begin |
1112 begin |
1109 {$IFDEF GL2} |
1113 {$IFDEF GL2} |
1110 glBindBuffer(GL_ARRAY_BUFFER, tBuffer); |
1114 glBindBuffer(GL_ARRAY_BUFFER, tBuffer); |
1220 cScaleFactor:= f; |
1224 cScaleFactor:= f; |
1221 updateViewLimits(); |
1225 updateViewLimits(); |
1222 |
1226 |
1223 {$IFDEF GL2} |
1227 {$IFDEF GL2} |
1224 UpdateModelviewProjection; |
1228 UpdateModelviewProjection; |
1225 {$ENDIF} |
|
1226 end; |
|
1227 |
|
1228 procedure BeginWater; |
|
1229 begin |
|
1230 {$IFDEF GL2} |
|
1231 glUseProgram(shaderWater); |
|
1232 uCurrentMVPLocation:=uWaterMVPLocation; |
|
1233 UpdateModelviewProjection; |
|
1234 glDisableVertexAttribArray(aTexCoord); |
|
1235 glEnableVertexAttribArray(aColor); |
|
1236 {$ELSE} |
|
1237 glDisableClientState(GL_TEXTURE_COORD_ARRAY); |
|
1238 glEnableClientState(GL_COLOR_ARRAY); |
|
1239 {$ENDIF} |
|
1240 end; |
|
1241 |
|
1242 procedure EndWater; |
|
1243 begin |
|
1244 {$IFDEF GL2} |
|
1245 glUseProgram(shaderMain); |
|
1246 uCurrentMVPLocation:=uMainMVPLocation; |
|
1247 UpdateModelviewProjection; |
|
1248 glDisableVertexAttribArray(aColor); |
|
1249 glEnableVertexAttribArray(aTexCoord); |
|
1250 {$ELSE} |
|
1251 glDisableClientState(GL_COLOR_ARRAY); |
|
1252 glEnableClientState(GL_TEXTURE_COORD_ARRAY); |
|
1253 {$ENDIF} |
1229 {$ENDIF} |
1254 end; |
1230 end; |
1255 |
1231 |
1256 |
1232 |
1257 //////////////////////////////////////////////////////////////////////////////// |
1233 //////////////////////////////////////////////////////////////////////////////// |