agep110
یک شنبه 16 تیر 1392, 18:59 عصر
سلام.
کسی میتونه بگه این ارور ماله چیه!؟:لبخند:
http://s1.picofile.com/file/7835199137/error.png
اینم کدای برنامه :
#include <GL\glew.h>
#include <GL\freeglut.h>
#include <vector>
#include <string>
#include <iostream>
#include <glm-0.9.4.4\glm\glm.hpp>
#include <glm-0.9.4.4\glm\gtc\type_ptr.hpp>
GLuint vertexBufferObject;
GLuint indexBufferObject;
#define GREEN_COLOR 0.0f, 1.0f, 0.0f, 1.0f
#define BLUE_COLOR 0.0f, 0.0f, 1.0f, 1.0f
#define RED_COLOR 1.0f, 0.0f, 0.0f, 1.0f
#define GREY_COLOR 0.8f, 0.8f, 0.8f, 1.0f
#define BROWN_COLOR 0.5f, 0.5f, 0.0f, 1.0f
const float vertexData[] =
{
+1.0f, +1.0f, +1.0f,
-1.0f, -1.0f, +1.0f,
-1.0f, +1.0f, -1.0f,
+1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, -1.0f,
+1.0f, +1.0f, -1.0f,
+1.0f, -1.0f, +1.0f,
-1.0f, +1.0f, +1.0f,
GREEN_COLOR,
BLUE_COLOR,
RED_COLOR,
BROWN_COLOR,
GREEN_COLOR,
BLUE_COLOR,
RED_COLOR,
BROWN_COLOR,
};
const GLshort indexData[] =
{
0, 1, 2,
1, 0, 3,
2, 3, 0,
3, 2, 1,
5, 4, 6,
4, 5, 7,
7, 6, 4,
6, 7, 5,
};
const char *vertexShader=" \n\
#version 330 \n\
\n\
layout (location = 0) in vec4 position; \n\
layout (location = 1) in vec4 color; \n\
\n\
smooth out vec4 vertexColor; \n\
\n\
uniform mat4 cameraToClipMatrix; \n\
uniform mat4 modelToClipMatrix; \n\
\n\
void main() \n\
{ \n\
vec4 cameraPos = modelToClipMatrix * position; \n\
gl_Position = cameraToClipMatrix * cameraPos; \n\
vertexColor = color; \n\
}";
const char *fragmentshader=" \n\
#version 330 \n\
smooth in vec4 vertexColor; \n\
out vec4 fragColor; \n\
\n\
void main() \n\
{ \n\
fragColor = vertexColor; \n\
}";
void cteateVertexBufferObject()
{
glGenBuffers(1, &vertexBufferObject);
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObject);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertexData), vertexData, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glGenBuffers(1, &indexBufferObject);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBufferObject);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indexData), indexData, GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
}
GLuint vertexArrayObject;
void createVertexArrayObject()
{
glGenVertexArrays(1, &vertexArrayObject);
glBindVertexArray(vertexArrayObject);
GLuint colorDataOffset = sizeof(float) * 3 * 8;
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObject);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, 0, (void*)colorDataOffset);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBufferObject);
glBindVertexArray(0);
}
GLuint createShader(GLenum shaderType, const std::string shaderFile)
{
GLuint shader = glCreateShader(shaderType);
const char *shaderData = shaderFile.c_str();
glShaderSource(shader, 1, &shaderData, NULL);
glCompileShader(shader);
GLint status;
glGetShaderiv(shader, GL_COMPILE_STATUS, &status);
if (status == GL_FALSE)
{
GLint infoLogLenght;
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLogLenght);
GLchar *infoLog = new GLchar[infoLogLenght + 1];
glGetShaderInfoLog(shader, sizeof(infoLog), NULL, infoLog);
GLchar *printLog = NULL;
switch (shaderType)
{
case GL_VERTEX_SHADER: printLog = "Vertex"; break;
case GL_FRAGMENT_SHADER: printLog = "Fragment"; break;
case GL_GEOMETRY_SHADER: printLog = "Geometry"; break;
}
fprintf(stderr, "Error on shader: %s\n", printLog, infoLog);
delete[] infoLog;
}
return shader;
}
GLuint createProgram(const std::vector<GLint> shaderList)
{
GLuint program = glCreateProgram();
for (GLuint i = 0; i < shaderList.size(); i++)
{
glAttachShader(program, shaderList[i]);
}
glLinkProgram(program);
GLint status;
glGetProgramiv(program, GL_LINK_STATUS, &status);
if (status == GL_FALSE)
{
GLint infoLogLenght;
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &infoLogLenght);
GLchar *infoLog = new GLchar[infoLogLenght + 1];
glGetProgramInfoLog(program, infoLogLenght, NULL, infoLog);
fprintf(stderr, "Program link Failur: %s\n", infoLog);
delete[] infoLog;
}
for (GLuint i = 0; i < shaderList.size(); i++)
{
glDetachShader(program, shaderList[i]);
}
glUseProgram(program);
return program;
}
float CalcFrustumScale(float fFovDeg)
{
const float degToRad = 3.14159f * 2.0f / 360.0f;
float fFovRad = fFovDeg * degToRad;
return 1.0f / tan(fFovRad / 2.0f);
}
glm::vec3 StationaryOffset(float fElapsedTime)
{
return glm::vec3(0.0f, 0.0f, -20.0f);
}
glm::vec3 OvalOffset(float fElapsedTime)
{
const float fLoopDuration = 3.0f;
const float fScale = 3.14159f * 2.0f / fLoopDuration;
float fCurrTimeThroughLoop = fmodf(fElapsedTime, fLoopDuration);
return glm::vec3(cosf(fCurrTimeThroughLoop * fScale) * 4.f,
sinf(fCurrTimeThroughLoop * fScale) * 6.f,
-20.0f);
}
glm::vec3 BottomCircleOffset(float fElapsedTime)
{
const float fLoopDuration = 12.0f;
const float fScale = 3.14159f * 2.0f / fLoopDuration;
float fCurrTimeThroughLoop = fmodf(fElapsedTime, fLoopDuration);
return glm::vec3(cosf(fCurrTimeThroughLoop * fScale) * 5.f,
-3.5f,
sinf(fCurrTimeThroughLoop * fScale) * 5.f - 20.0f);
}
struct Instance
{
typedef glm::vec3(*OffsetFunc)(float);
OffsetFunc CalcOffset;
glm::mat4 ConstructMatrix(float fElapsedTime)
{
glm::mat4 theMat(1.0f);
theMat[3] = glm::vec4(CalcOffset(fElapsedTime), 1.0f);
return theMat;
}
};
Instance g_instanceList[] =
{
{StationaryOffset},
{OvalOffset},
{BottomCircleOffset},
};
void initVboAndVao()
{
cteateVertexBufferObject();
createVertexArrayObject();
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glFrontFace(GL_CW);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDepthFunc(GL_LEQUAL);
glDepthRange(0.0f, 1.0f);
}
GLuint modelToCameraMatrixUnif;
GLuint cameraToClipMatrixUnif;
glm::mat4 cameraToClipMatrix(0.0f);
const float fFrustumScale = CalcFrustumScale(45.0f);
void initProgram()
{
std::vector<GLint> shaderList;
shaderList.push_back(createShader(GL_VERTEX_SHADER , vertexShader));
shaderList.push_back(createShader(GL_FRAGMENT_SHAD ER, fragmentshader));
GLuint theProgram = createProgram(shaderList);
modelToCameraMatrixUnif = glGetUniformLocation(theProgram, "modelToClipMatrix");
cameraToClipMatrixUnif = glGetUniformLocation(theProgram, "cameraToClipMatrix");
float fzNear = 1.0f; float fzFar = 45.0f;
cameraToClipMatrix[0].x = fFrustumScale;
cameraToClipMatrix[1].y = fFrustumScale;
cameraToClipMatrix[2].z = (fzFar + fzNear) / (fzNear - fzFar);
cameraToClipMatrix[2].w = -1.0f;
cameraToClipMatrix[3].z = (2 * fzFar * fzNear) / (fzNear - fzFar);
glUniformMatrix4fv(cameraToClipMatrixUnif, 1, GL_FALSE, glm::value_ptr(cameraToClipMatrix));;
}
void display()
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClearDepth(1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBindVertexArray(vertexArrayObject);
float fElapsedTime = glutGet(GLUT_ELAPSED_TIME) / 1000.0f;
for(int i = 0; i < sizeof(g_instanceList); i++)
{
Instance &currInst = g_instanceList[i];
const glm::mat4 &transformMatrix = currInst.ConstructMatrix(fElapsedTime);
glUniformMatrix4fv(modelToCameraMatrixUnif, 1, GL_FALSE, glm::value_ptr(transformMatrix));
glDrawElements(GL_TRIANGLES, sizeof(indexData), GL_UNSIGNED_SHORT, 0);
}
glBindVertexArray(0);
glutSwapBuffers();
glutPostRedisplay();
}
void reshape (int w, int h)
{
cameraToClipMatrix[0].x = fFrustumScale * (h / (float)w);
cameraToClipMatrix[1].y = fFrustumScale;
glUniformMatrix4fv(cameraToClipMatrixUnif, 1, GL_FALSE, glm::value_ptr(cameraToClipMatrix));
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow("Legend");
if (glewInit() != GLEW_OK)
{
fprintf(stderr, "Error On Load GLEW: %s\n", glewGetErrorString(glewInit()));
return 1;
}
initVboAndVao();
initProgram();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}
کسی میتونه بگه این ارور ماله چیه!؟:لبخند:
http://s1.picofile.com/file/7835199137/error.png
اینم کدای برنامه :
#include <GL\glew.h>
#include <GL\freeglut.h>
#include <vector>
#include <string>
#include <iostream>
#include <glm-0.9.4.4\glm\glm.hpp>
#include <glm-0.9.4.4\glm\gtc\type_ptr.hpp>
GLuint vertexBufferObject;
GLuint indexBufferObject;
#define GREEN_COLOR 0.0f, 1.0f, 0.0f, 1.0f
#define BLUE_COLOR 0.0f, 0.0f, 1.0f, 1.0f
#define RED_COLOR 1.0f, 0.0f, 0.0f, 1.0f
#define GREY_COLOR 0.8f, 0.8f, 0.8f, 1.0f
#define BROWN_COLOR 0.5f, 0.5f, 0.0f, 1.0f
const float vertexData[] =
{
+1.0f, +1.0f, +1.0f,
-1.0f, -1.0f, +1.0f,
-1.0f, +1.0f, -1.0f,
+1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, -1.0f,
+1.0f, +1.0f, -1.0f,
+1.0f, -1.0f, +1.0f,
-1.0f, +1.0f, +1.0f,
GREEN_COLOR,
BLUE_COLOR,
RED_COLOR,
BROWN_COLOR,
GREEN_COLOR,
BLUE_COLOR,
RED_COLOR,
BROWN_COLOR,
};
const GLshort indexData[] =
{
0, 1, 2,
1, 0, 3,
2, 3, 0,
3, 2, 1,
5, 4, 6,
4, 5, 7,
7, 6, 4,
6, 7, 5,
};
const char *vertexShader=" \n\
#version 330 \n\
\n\
layout (location = 0) in vec4 position; \n\
layout (location = 1) in vec4 color; \n\
\n\
smooth out vec4 vertexColor; \n\
\n\
uniform mat4 cameraToClipMatrix; \n\
uniform mat4 modelToClipMatrix; \n\
\n\
void main() \n\
{ \n\
vec4 cameraPos = modelToClipMatrix * position; \n\
gl_Position = cameraToClipMatrix * cameraPos; \n\
vertexColor = color; \n\
}";
const char *fragmentshader=" \n\
#version 330 \n\
smooth in vec4 vertexColor; \n\
out vec4 fragColor; \n\
\n\
void main() \n\
{ \n\
fragColor = vertexColor; \n\
}";
void cteateVertexBufferObject()
{
glGenBuffers(1, &vertexBufferObject);
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObject);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertexData), vertexData, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glGenBuffers(1, &indexBufferObject);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBufferObject);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indexData), indexData, GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
}
GLuint vertexArrayObject;
void createVertexArrayObject()
{
glGenVertexArrays(1, &vertexArrayObject);
glBindVertexArray(vertexArrayObject);
GLuint colorDataOffset = sizeof(float) * 3 * 8;
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObject);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, 0, (void*)colorDataOffset);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBufferObject);
glBindVertexArray(0);
}
GLuint createShader(GLenum shaderType, const std::string shaderFile)
{
GLuint shader = glCreateShader(shaderType);
const char *shaderData = shaderFile.c_str();
glShaderSource(shader, 1, &shaderData, NULL);
glCompileShader(shader);
GLint status;
glGetShaderiv(shader, GL_COMPILE_STATUS, &status);
if (status == GL_FALSE)
{
GLint infoLogLenght;
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLogLenght);
GLchar *infoLog = new GLchar[infoLogLenght + 1];
glGetShaderInfoLog(shader, sizeof(infoLog), NULL, infoLog);
GLchar *printLog = NULL;
switch (shaderType)
{
case GL_VERTEX_SHADER: printLog = "Vertex"; break;
case GL_FRAGMENT_SHADER: printLog = "Fragment"; break;
case GL_GEOMETRY_SHADER: printLog = "Geometry"; break;
}
fprintf(stderr, "Error on shader: %s\n", printLog, infoLog);
delete[] infoLog;
}
return shader;
}
GLuint createProgram(const std::vector<GLint> shaderList)
{
GLuint program = glCreateProgram();
for (GLuint i = 0; i < shaderList.size(); i++)
{
glAttachShader(program, shaderList[i]);
}
glLinkProgram(program);
GLint status;
glGetProgramiv(program, GL_LINK_STATUS, &status);
if (status == GL_FALSE)
{
GLint infoLogLenght;
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &infoLogLenght);
GLchar *infoLog = new GLchar[infoLogLenght + 1];
glGetProgramInfoLog(program, infoLogLenght, NULL, infoLog);
fprintf(stderr, "Program link Failur: %s\n", infoLog);
delete[] infoLog;
}
for (GLuint i = 0; i < shaderList.size(); i++)
{
glDetachShader(program, shaderList[i]);
}
glUseProgram(program);
return program;
}
float CalcFrustumScale(float fFovDeg)
{
const float degToRad = 3.14159f * 2.0f / 360.0f;
float fFovRad = fFovDeg * degToRad;
return 1.0f / tan(fFovRad / 2.0f);
}
glm::vec3 StationaryOffset(float fElapsedTime)
{
return glm::vec3(0.0f, 0.0f, -20.0f);
}
glm::vec3 OvalOffset(float fElapsedTime)
{
const float fLoopDuration = 3.0f;
const float fScale = 3.14159f * 2.0f / fLoopDuration;
float fCurrTimeThroughLoop = fmodf(fElapsedTime, fLoopDuration);
return glm::vec3(cosf(fCurrTimeThroughLoop * fScale) * 4.f,
sinf(fCurrTimeThroughLoop * fScale) * 6.f,
-20.0f);
}
glm::vec3 BottomCircleOffset(float fElapsedTime)
{
const float fLoopDuration = 12.0f;
const float fScale = 3.14159f * 2.0f / fLoopDuration;
float fCurrTimeThroughLoop = fmodf(fElapsedTime, fLoopDuration);
return glm::vec3(cosf(fCurrTimeThroughLoop * fScale) * 5.f,
-3.5f,
sinf(fCurrTimeThroughLoop * fScale) * 5.f - 20.0f);
}
struct Instance
{
typedef glm::vec3(*OffsetFunc)(float);
OffsetFunc CalcOffset;
glm::mat4 ConstructMatrix(float fElapsedTime)
{
glm::mat4 theMat(1.0f);
theMat[3] = glm::vec4(CalcOffset(fElapsedTime), 1.0f);
return theMat;
}
};
Instance g_instanceList[] =
{
{StationaryOffset},
{OvalOffset},
{BottomCircleOffset},
};
void initVboAndVao()
{
cteateVertexBufferObject();
createVertexArrayObject();
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glFrontFace(GL_CW);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDepthFunc(GL_LEQUAL);
glDepthRange(0.0f, 1.0f);
}
GLuint modelToCameraMatrixUnif;
GLuint cameraToClipMatrixUnif;
glm::mat4 cameraToClipMatrix(0.0f);
const float fFrustumScale = CalcFrustumScale(45.0f);
void initProgram()
{
std::vector<GLint> shaderList;
shaderList.push_back(createShader(GL_VERTEX_SHADER , vertexShader));
shaderList.push_back(createShader(GL_FRAGMENT_SHAD ER, fragmentshader));
GLuint theProgram = createProgram(shaderList);
modelToCameraMatrixUnif = glGetUniformLocation(theProgram, "modelToClipMatrix");
cameraToClipMatrixUnif = glGetUniformLocation(theProgram, "cameraToClipMatrix");
float fzNear = 1.0f; float fzFar = 45.0f;
cameraToClipMatrix[0].x = fFrustumScale;
cameraToClipMatrix[1].y = fFrustumScale;
cameraToClipMatrix[2].z = (fzFar + fzNear) / (fzNear - fzFar);
cameraToClipMatrix[2].w = -1.0f;
cameraToClipMatrix[3].z = (2 * fzFar * fzNear) / (fzNear - fzFar);
glUniformMatrix4fv(cameraToClipMatrixUnif, 1, GL_FALSE, glm::value_ptr(cameraToClipMatrix));;
}
void display()
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClearDepth(1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBindVertexArray(vertexArrayObject);
float fElapsedTime = glutGet(GLUT_ELAPSED_TIME) / 1000.0f;
for(int i = 0; i < sizeof(g_instanceList); i++)
{
Instance &currInst = g_instanceList[i];
const glm::mat4 &transformMatrix = currInst.ConstructMatrix(fElapsedTime);
glUniformMatrix4fv(modelToCameraMatrixUnif, 1, GL_FALSE, glm::value_ptr(transformMatrix));
glDrawElements(GL_TRIANGLES, sizeof(indexData), GL_UNSIGNED_SHORT, 0);
}
glBindVertexArray(0);
glutSwapBuffers();
glutPostRedisplay();
}
void reshape (int w, int h)
{
cameraToClipMatrix[0].x = fFrustumScale * (h / (float)w);
cameraToClipMatrix[1].y = fFrustumScale;
glUniformMatrix4fv(cameraToClipMatrixUnif, 1, GL_FALSE, glm::value_ptr(cameraToClipMatrix));
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow("Legend");
if (glewInit() != GLEW_OK)
{
fprintf(stderr, "Error On Load GLEW: %s\n", glewGetErrorString(glewInit()));
return 1;
}
initVboAndVao();
initProgram();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}