hi,
ich habe den terrain gpu 4 shader mal ausprobiert. Das VBO zeichnet richtig, sobald ich jedoch den shader aktiviere kommt das dabei raus. (s. Bilder)
mein Code:
Code: // in der Render Schleife glTranslatef(-0,-0,-250); glRotatef(100,1,0,0); glDisable(GL_ALPHA_TEST); glEnable(GL_TEXTURE_2D); textures.Bind('0'); //heightmap binden EVTest.UseShader('prg'); //Shader aktivieren //glUniform1iARB(glGetUniformLocationARB(EVTest.programs[EVTest.prgnames.IndexOf('prg')], 'heightmap'), 0); glUniform2iARB(glGetUniformLocationARB(EVTest.programs[EVTest.prgnames.IndexOf('prg')], 'leafmin'), 0, 0); glEnableClientState(GL_VERTEX_ARRAY); glBindBuffer(GL_ARRAY_BUFFER, VBO); glInterleavedArrays(GL_V2F, SizeOf(TGL_V2F), nil); glVertexPointer(2, GL_FLOAT, 0, 0); glDrawArrays(GL_TRIANGLES, 0, 64*64*6);
// einmalig beim Initialisierungsvorgang.
Code: //laden der Texturen //etc. //VBO glGenBuffers(1, @VBO); glBindBuffer(GL_ARRAY_BUFFER, VBO); glBufferData(GL_ARRAY_BUFFER, 64*64*SizeOf(TGL_V3F), nil, GL_STATIC_DRAW); VBOPointer := glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY); for s := 0 to 63 do begin for t := 0 to 63 do begin VertexPointer := VBOPointer; VertexPointer^.X := s; VertexPointer^.Y := t; VertexPointer^.Z := 0; inc(Integer(VBOPointer), SizeOf(TGL_V3F)); end; end; glUnMapBuffer(GL_ARRAY_BUFFER); glClearColor(0.3, 0.4, 0.7, 0.0);
Dateianhänge: |
Dateikommentar: Mit Shader

mit shader.PNG [ 6.6 KiB | 6236-mal betrachtet ]
|
Dateikommentar: ohne Shader
ohne shader.PNG [12.81 KiB]
Noch nie heruntergeladen
|
|