Mój przykładowy program z wykorzystaniem OpenGL i Shader-ów w załączniku
W programie jest checkBox do zmieniania tego co jest rysowane i albo sie wykonuje funkcja Test0 albo funkcja Test1.
Zastanawia mnie jednak dlaczego jak uruchomie taką kombinację
Test0; a potem Test1 to obraz sie rysuje OK
A jak zrobię tak:
Test0; potem Test1; potem **Test0 **potem **Test1 **to obraz nie jest OK
Brakuje mi koncepcji co to może być ?
Wygląda to tak jakby nie ta tekstura byłą brana do rysowania.
Choć w kodzie wyglada wszystko OK (tak mi sie zdaje )
procedure TForm001.glDraw();
procedure test0;
begin
glClear(GL_COLOR_BUFFER_BIT {or GL_DEPTH_BUFFER_BIT}); // Clear The Screen And The Depth Buffer
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, PlasmaTex );
glBegin(GL_QUADS);
glTexCoord2f(1.0, 0.0); glVertex2f(-1.0, -1.0);
glTexCoord2f(0.0, 0.0); glVertex2f( 1.0, -1.0);
glTexCoord2f(0.0, 1.0); glVertex2f( {1.}0.5, 1.0);
glTexCoord2f(1.0, 1.0); glVertex2f({-1.}-0.5, 1.0);
glEnd();
end;
procedure test1;
begin
glClear(GL_COLOR_BUFFER_BIT {or GL_DEPTH_BUFFER_BIT}); // Clear The Screen And The Depth Buffer
//glBindTexture(GL_TEXTURE_2D, PlasmaTex );
//test_scan_converter(78,0,1.7,0.3,3.2,128);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture_image1);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture_image2);
glUseProgram(g_program);
glBegin(GL_QUAD_STRIP);
glMultiTexCoord2f(GL_TEXTURE0,0.0, 0.0);
glMultiTexCoord2f(GL_TEXTURE1,0.0, 0.0);
glVertex2f(0.0, 0.0);
glMultiTexCoord2f(GL_TEXTURE0,1.0, 0.0);
glMultiTexCoord2f(GL_TEXTURE1,1.0, 0.0);
glVertex2f( 1.0, 0.0);
glMultiTexCoord2f(GL_TEXTURE0,0.0, 0.5);
glMultiTexCoord2f(GL_TEXTURE1,0.0, 0.5);
glVertex2f(0.0, 0.8);
glMultiTexCoord2f(GL_TEXTURE0,1.0, 0.5);
glMultiTexCoord2f(GL_TEXTURE1,1.0, 0.5);
glVertex2f( 1.0, 0.8);
glMultiTexCoord2f(GL_TEXTURE0,0.0, 1.0);
glMultiTexCoord2f(GL_TEXTURE1,0.0, 1.0);
glVertex2f( 0.0, 1.0);
glMultiTexCoord2f(GL_TEXTURE0,1.0, 1.0);
glMultiTexCoord2f(GL_TEXTURE1,1.0, 1.0);
glVertex2f(1.0, 1.0);
glEnd(); // GL_QUAD_STRIP
glUseProgram(0);
end;
var i:integer;
begin
Inc(FPSCount);
case test of
0: test0;
1: test1;
end;
end;