LarsMiddendorf hat geschrieben: So richtig schnell ist das aber nicht. Kann mich errinern, dass zwar nur ein 1 Licht mit Intensität,Diffuse,Specular,Bumpmapping aber auf der GF4 auch auf ca 250fps kam.
Mh.. ja, mir kommt das auch langsam vor, daher ja die frage wegen der Performance hier... hast du irgend ne idee woran das liegen könnte??? Ist in dem Shader irgendwas total verkehrt???
Hier nochmal der Code wie ich den Shader erstelle/binde und wie ich Attribute übergebe:
Code: VertexShaderText:=VertexShader.Text; PixelShaderText:=PixelShader.Text; VertexSize:=Length(VertexShaderText); PixelSize:=Length(PixelShaderText); if glIsProgramARB(ShaderID) then glDeleteProgramsARB(1, @ShaderID); ShaderID:=glCreateProgramObjectARB; VertexShaderObject:=glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB); PixelShaderObject:=glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB); glShaderSourceARB(VertexShaderObject, 1, @VertexShaderText, @VertexSize); glShaderSourceARB(PixelShaderObject, 1, @PixelShaderText, @PixelSize); glCompileShaderARB(VertexShaderObject); glCompileShaderARB(PixelShaderObject); glAttachObjectARB(ShaderID, VertexShaderObject); glAttachObjectARB(ShaderID, PixelShaderObject); glLinkProgramARB(ShaderID); glDeleteObjectARB(VertexShaderObject); glDeleteObjectARB(PixelShaderObject);
Attribute übergeben:
Code: glUniform4fARB(glGetUniformLocationARB(ShaderID, PGLCharARB('globalLight')), 0.2, 0.2, 0.2, 1); glUniform4fARB(glGetUniformLocationARB(ShaderID, PGLCharARB('pointLight1Position')), 10, 5, 0, 0); glUniform4fARB(glGetUniformLocationARB(ShaderID, PGLCharARB('pointLight1Color')), 1, 1, 0, 1); glUniform1fARB(glGetUniformLocationARB(ShaderID, PGLCharARB('pointLight1Intensity')), 0.75); glUniform1fARB(glGetUniformLocationARB(ShaderID, PGLCharARB('pointLight1DropOff')), 5); glUniform1fARB(glGetUniformLocationARB(ShaderID, PGLCharARB('pointLight1Radius')), 14); glUniform4fARB(glGetUniformLocationARB(ShaderID, PGLCharARB('pointLight2Position')), -5, 2, 0, 0); glUniform4fARB(glGetUniformLocationARB(ShaderID, PGLCharARB('pointLight2Color')), 0, 0, 1, 1); glUniform1fARB(glGetUniformLocationARB(ShaderID, PGLCharARB('pointLight2Intensity')), 1); glUniform1fARB(glGetUniformLocationARB(ShaderID, PGLCharARB('pointLight2DropOff')), 7); glUniform1fARB(glGetUniformLocationARB(ShaderID, PGLCharARB('pointLight2Radius')), 20);
Hat irgendwer irgendne idee wieso es so langsam ist???
Au'revoir,
Aya~
PS: Mit Space kann man den Shader in dem Test btw deaktivieren.. also an der art wie ich objekte zeichne etc kann es nicht liegen, denn ohne Shader sind es über 500fps bei meiner GraKa hier...
|