progs/util: added GetShaderCompile/LinkTime() to get compilation/link times
This commit is contained in:
@@ -14,6 +14,12 @@
|
|||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
#include "shaderutil.h"
|
#include "shaderutil.h"
|
||||||
|
|
||||||
|
/** time to compile previous shader */
|
||||||
|
static GLdouble CompileTime = 0.0;
|
||||||
|
|
||||||
|
/** time to linke previous program */
|
||||||
|
static GLdouble LinkTime = 0.0;
|
||||||
|
|
||||||
|
|
||||||
GLboolean
|
GLboolean
|
||||||
ShadersSupported(void)
|
ShadersSupported(void)
|
||||||
@@ -37,10 +43,17 @@ CompileShaderText(GLenum shaderType, const char *text)
|
|||||||
{
|
{
|
||||||
GLuint shader;
|
GLuint shader;
|
||||||
GLint stat;
|
GLint stat;
|
||||||
|
GLdouble t0, t1;
|
||||||
|
|
||||||
shader = glCreateShader(shaderType);
|
shader = glCreateShader(shaderType);
|
||||||
glShaderSource(shader, 1, (const GLchar **) &text, NULL);
|
glShaderSource(shader, 1, (const GLchar **) &text, NULL);
|
||||||
|
|
||||||
|
t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
||||||
glCompileShader(shader);
|
glCompileShader(shader);
|
||||||
|
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
||||||
|
|
||||||
|
CompileTime = t1 - t0;
|
||||||
|
|
||||||
glGetShaderiv(shader, GL_COMPILE_STATUS, &stat);
|
glGetShaderiv(shader, GL_COMPILE_STATUS, &stat);
|
||||||
if (!stat) {
|
if (!stat) {
|
||||||
GLchar log[1000];
|
GLchar log[1000];
|
||||||
@@ -95,6 +108,7 @@ GLuint
|
|||||||
LinkShaders(GLuint vertShader, GLuint fragShader)
|
LinkShaders(GLuint vertShader, GLuint fragShader)
|
||||||
{
|
{
|
||||||
GLuint program = glCreateProgram();
|
GLuint program = glCreateProgram();
|
||||||
|
GLdouble t0, t1;
|
||||||
|
|
||||||
assert(vertShader || fragShader);
|
assert(vertShader || fragShader);
|
||||||
|
|
||||||
@@ -102,7 +116,12 @@ LinkShaders(GLuint vertShader, GLuint fragShader)
|
|||||||
glAttachShader(program, fragShader);
|
glAttachShader(program, fragShader);
|
||||||
if (vertShader)
|
if (vertShader)
|
||||||
glAttachShader(program, vertShader);
|
glAttachShader(program, vertShader);
|
||||||
|
|
||||||
|
t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
||||||
glLinkProgram(program);
|
glLinkProgram(program);
|
||||||
|
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
||||||
|
|
||||||
|
LinkTime = t1 - t0;
|
||||||
|
|
||||||
/* check link */
|
/* check link */
|
||||||
{
|
{
|
||||||
@@ -121,6 +140,20 @@ LinkShaders(GLuint vertShader, GLuint fragShader)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GLdouble
|
||||||
|
GetShaderCompileTime(void)
|
||||||
|
{
|
||||||
|
return CompileTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GLdouble
|
||||||
|
GetShaderLinkTime(void)
|
||||||
|
{
|
||||||
|
return LinkTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SetUniformValues(GLuint program, struct uniform_info uniforms[])
|
SetUniformValues(GLuint program, struct uniform_info uniforms[])
|
||||||
{
|
{
|
||||||
|
@@ -36,6 +36,12 @@ CompileShaderFile(GLenum shaderType, const char *filename);
|
|||||||
extern GLuint
|
extern GLuint
|
||||||
LinkShaders(GLuint vertShader, GLuint fragShader);
|
LinkShaders(GLuint vertShader, GLuint fragShader);
|
||||||
|
|
||||||
|
extern GLdouble
|
||||||
|
GetShaderCompileTime(void);
|
||||||
|
|
||||||
|
extern GLdouble
|
||||||
|
GetShaderLinkTime(void);
|
||||||
|
|
||||||
extern void
|
extern void
|
||||||
SetUniformValues(GLuint program, struct uniform_info uniforms[]);
|
SetUniformValues(GLuint program, struct uniform_info uniforms[]);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user