本文整理汇总了C++中LoadShaders函数的典型用法代码示例。如果您正苦于以下问题:C++ LoadShaders函数的具体用法?C++ LoadShaders怎么用?C++ LoadShaders使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了LoadShaders函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LoadShaders
mitk::ShaderRepository::ShaderRepository()
{
LoadShaders();
}
示例2: glClearColor
void SceneText::Init()
{
// Black background
glClearColor(0.0f, 0.0f, 0.4f, 0.0f);
// Enable depth test
glEnable(GL_DEPTH_TEST);
// Accept fragment if it closer to the camera than the former one
glDepthFunc(GL_LESS);
glEnable(GL_CULL_FACE);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glGenVertexArrays(1, &m_vertexArrayID);
glBindVertexArray(m_vertexArrayID);
m_programID = LoadShaders( "Shader//Texture.vertexshader", "Shader//Text.fragmentshader" );
// Get a handle for our uniform
m_parameters[U_MVP] = glGetUniformLocation(m_programID, "MVP");
//m_parameters[U_MODEL] = glGetUniformLocation(m_programID, "M");
//m_parameters[U_VIEW] = glGetUniformLocation(m_programID, "V");
m_parameters[U_MODELVIEW] = glGetUniformLocation(m_programID, "MV");
m_parameters[U_MODELVIEW_INVERSE_TRANSPOSE] = glGetUniformLocation(m_programID, "MV_inverse_transpose");
m_parameters[U_MATERIAL_AMBIENT] = glGetUniformLocation(m_programID, "material.kAmbient");
m_parameters[U_MATERIAL_DIFFUSE] = glGetUniformLocation(m_programID, "material.kDiffuse");
m_parameters[U_MATERIAL_SPECULAR] = glGetUniformLocation(m_programID, "material.kSpecular");
m_parameters[U_MATERIAL_SHININESS] = glGetUniformLocation(m_programID, "material.kShininess");
m_parameters[U_LIGHTENABLED] = glGetUniformLocation(m_programID, "lightEnabled");
m_parameters[U_NUMLIGHTS] = glGetUniformLocation(m_programID, "numLights");
m_parameters[U_LIGHT0_TYPE] = glGetUniformLocation(m_programID, "lights[0].type");
m_parameters[U_LIGHT0_POSITION] = glGetUniformLocation(m_programID, "lights[0].position_cameraspace");
m_parameters[U_LIGHT0_COLOR] = glGetUniformLocation(m_programID, "lights[0].color");
m_parameters[U_LIGHT0_POWER] = glGetUniformLocation(m_programID, "lights[0].power");
m_parameters[U_LIGHT0_KC] = glGetUniformLocation(m_programID, "lights[0].kC");
m_parameters[U_LIGHT0_KL] = glGetUniformLocation(m_programID, "lights[0].kL");
m_parameters[U_LIGHT0_KQ] = glGetUniformLocation(m_programID, "lights[0].kQ");
m_parameters[U_LIGHT0_SPOTDIRECTION] = glGetUniformLocation(m_programID, "lights[0].spotDirection");
m_parameters[U_LIGHT0_COSCUTOFF] = glGetUniformLocation(m_programID, "lights[0].cosCutoff");
m_parameters[U_LIGHT0_COSINNER] = glGetUniformLocation(m_programID, "lights[0].cosInner");
m_parameters[U_LIGHT0_EXPONENT] = glGetUniformLocation(m_programID, "lights[0].exponent");
m_parameters[U_LIGHT1_TYPE] = glGetUniformLocation(m_programID, "lights[1].type");
m_parameters[U_LIGHT1_POSITION] = glGetUniformLocation(m_programID, "lights[1].position_cameraspace");
m_parameters[U_LIGHT1_COLOR] = glGetUniformLocation(m_programID, "lights[1].color");
m_parameters[U_LIGHT1_POWER] = glGetUniformLocation(m_programID, "lights[1].power");
m_parameters[U_LIGHT1_KC] = glGetUniformLocation(m_programID, "lights[1].kC");
m_parameters[U_LIGHT1_KL] = glGetUniformLocation(m_programID, "lights[1].kL");
m_parameters[U_LIGHT1_KQ] = glGetUniformLocation(m_programID, "lights[1].kQ");
m_parameters[U_LIGHT1_SPOTDIRECTION] = glGetUniformLocation(m_programID, "lights[1].spotDirection");
m_parameters[U_LIGHT1_COSCUTOFF] = glGetUniformLocation(m_programID, "lights[1].cosCutoff");
m_parameters[U_LIGHT1_COSINNER] = glGetUniformLocation(m_programID, "lights[1].cosInner");
m_parameters[U_LIGHT1_EXPONENT] = glGetUniformLocation(m_programID, "lights[1].exponent");
// Get a handle for our "colorTexture" uniform
m_parameters[U_COLOR_TEXTURE_ENABLED] = glGetUniformLocation(m_programID, "colorTextureEnabled");
m_parameters[U_COLOR_TEXTURE] = glGetUniformLocation(m_programID, "colorTexture");
// Get a handle for our "textColor" uniform
m_parameters[U_TEXT_ENABLED] = glGetUniformLocation(m_programID, "textEnabled");
m_parameters[U_TEXT_COLOR] = glGetUniformLocation(m_programID, "textColor");
// Use our shader
glUseProgram(m_programID);
lights[0].type = Light::LIGHT_DIRECTIONAL;
lights[0].position.Set(0, 20, 0);
lights[0].color.Set(1, 1, 1);
lights[0].power = 1;
lights[0].kC = 1.f;
lights[0].kL = 0.01f;
lights[0].kQ = 0.001f;
lights[0].cosCutoff = cos(Math::DegreeToRadian(45));
lights[0].cosInner = cos(Math::DegreeToRadian(30));
lights[0].exponent = 3.f;
lights[0].spotDirection.Set(0.f, 1.f, 0.f);
lights[1].type = Light::LIGHT_DIRECTIONAL;
lights[1].position.Set(1, 1, 0);
lights[1].color.Set(1, 1, 0.5f);
lights[1].power = 0.4f;
//lights[1].kC = 1.f;
//lights[1].kL = 0.01f;
//lights[1].kQ = 0.001f;
//lights[1].cosCutoff = cos(Math::DegreeToRadian(45));
//lights[1].cosInner = cos(Math::DegreeToRadian(30));
//lights[1].exponent = 3.f;
//lights[1].spotDirection.Set(0.f, 1.f, 0.f);
glUniform1i(m_parameters[U_NUMLIGHTS], 1);
glUniform1i(m_parameters[U_TEXT_ENABLED], 0);
glUniform1i(m_parameters[U_LIGHT0_TYPE], lights[0].type);
glUniform3fv(m_parameters[U_LIGHT0_COLOR], 1, &lights[0].color.r);
glUniform1f(m_parameters[U_LIGHT0_POWER], lights[0].power);
glUniform1f(m_parameters[U_LIGHT0_KC], lights[0].kC);
glUniform1f(m_parameters[U_LIGHT0_KL], lights[0].kL);
glUniform1f(m_parameters[U_LIGHT0_KQ], lights[0].kQ);
glUniform1f(m_parameters[U_LIGHT0_COSCUTOFF], lights[0].cosCutoff);
glUniform1f(m_parameters[U_LIGHT0_COSINNER], lights[0].cosInner);
//.........这里部分代码省略.........
示例3: InitView
/*!****************************************************************************
@Function InitView
@Return bool true if no error occured
@Description Code in InitView() will be called by PVRShell upon
initialization or after a change in the rendering context.
Used to initialize variables that are dependant on the rendering
context (e.g. textures, vertex buffers, etc.)
******************************************************************************/
bool OGLES2StencilBuffer::InitView()
{
CPVRTString ErrorStr;
/*
Initialize VBO data
*/
m_Cylinder.LoadVbos();
m_Sphere.LoadVbos();
/*
Load textures
*/
if (!LoadTextures(&ErrorStr))
{
PVRShellSet(prefExitMessage, ErrorStr.c_str());
return false;
}
/*
Load and compile the shaders & link programs
*/
if (!LoadShaders(&ErrorStr))
{
PVRShellSet(prefExitMessage, ErrorStr.c_str());
return false;
}
// Set the sampler2D uniforms to corresponding texture units
glUniform1i(glGetUniformLocation(m_ShaderProgram.uiId, "sTexture"), 0);
// Is the screen rotated?
bool bRotate = PVRShellGet(prefIsRotated) && PVRShellGet(prefFullScreen);
/*
Initialize Print3D
*/
if(m_Print3D.SetTextures(0,PVRShellGet(prefWidth),PVRShellGet(prefHeight), bRotate) != PVR_SUCCESS)
{
PVRShellSet(prefExitMessage, "ERROR: Cannot initialise Print3D\n");
return false;
}
/*
Set OpenGL ES render states needed for this training course
*/
// Enable backface culling and depth test
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
// Use a nice bright blue as clear colour
glClearColor(0.6f, 0.8f, 1.0f, 1.0f);
// Set stencil clear value
glClearStencil(0);
return true;
}
示例4: LoadShaders
void Texture::load(float x, float y, float subWidth, float subHeight, float imageWidth, float imageHeight) {
if(!shaderLoaded)
{
programID = LoadShaders();
shaderLoaded=true;
}
scale = 1;
float topLeftS = x / imageWidth;
float topLeftT = (y+subHeight) / imageHeight;
float topRightS = (x + subWidth) / imageWidth;
float topRightT = (y+subHeight) / imageHeight;
float bottomRightS = (x + subWidth) / imageWidth;
float bottomRightT = (y) / imageHeight;
float bottomLeftS = x / imageWidth;
float bottomLeftT = (y)/ imageHeight;
//Center
/*GLfloat quad_vertices[] = {
-width/2.f, -height/2.f, //Bottom Left
width/2.f, -height/2.f, //Bottom Right
width/2.f, height/2.f, //Top Right
-width/2.f, height/2.f,}; //Top Left*/
GLfloat quad_vertices[] = {
0.0f, subHeight, //Bottom Left
subWidth, subHeight, //Bottom Right
subWidth, 0.0f, //Top Right
0.0f, 0.0f,}; //Top Left
glGenBuffers(1, &vbo_quad_vertices);
glBindBuffer(GL_ARRAY_BUFFER, vbo_quad_vertices);
glBufferData(GL_ARRAY_BUFFER, sizeof(quad_vertices), quad_vertices, GL_STATIC_DRAW);
GLfloat quad_texcoords[] = {
topLeftS, topLeftT,
topRightS, topRightT,
bottomRightS, bottomRightT,
bottomLeftS, bottomLeftT,
};
glGenBuffers(1, &vbo_quad_texcoords);
glBindBuffer(GL_ARRAY_BUFFER, vbo_quad_texcoords);
glBufferData(GL_ARRAY_BUFFER, sizeof(quad_texcoords), quad_texcoords, GL_STATIC_DRAW);
GLushort quad_elements[] = {0, 1, 2, 2, 3, 0,};
glGenBuffers(1, &ibo_quad_elements);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo_quad_elements);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(quad_elements), quad_elements, GL_STATIC_DRAW);
attribute_coord2d = glGetAttribLocation(programID, "coord2d");
attribute_texcoord = glGetAttribLocation(programID, "texcoord");
uniform_mvp = glGetUniformLocation(programID, "mvp");
uniform_mytexture = glGetUniformLocation(programID, "mytexture");
if(attribute_coord2d==-1 || attribute_texcoord==-1 || uniform_mvp==-1 || uniform_mytexture==-1)
printf("Cound not bind attributes in texture");
}
示例5: load_b
void load_b(const char * objName, GLFWwindow * window){
GLuint VertexArrayID;
glGenVertexArrays(1, &VertexArrayID);
glBindVertexArray(VertexArrayID);
// Create and compile our GLSL program from the shaders
GLuint programID = LoadShaders( "StandardShading.vertexshader", "StandardShading.fragmentshader" );
// Get a handle for our "MVP" uniform
GLuint MatrixID = glGetUniformLocation(programID, "MVP");
GLuint ViewMatrixID = glGetUniformLocation(programID, "V");
GLuint ModelMatrixID = glGetUniformLocation(programID, "M");
// Load the texture
// GLuint Texture = loadDDS("uvmap.DDS");
GLuint Texture = loadBMP_custom("hero.bmp");
// Get a handle for our "myTextureSampler" uniform
GLuint TextureID = glGetUniformLocation(programID, "myTextureSampler");
// Read our .obj file
std::vector<glm::vec3> vertices,vertices2;
std::vector<glm::vec2> uvs,uvs2;
std::vector<glm::vec3> normals,normals2;
bool res2 = loadOBJ(objName, vertices, uvs, normals);
// Load it into a VBO
GLuint vertexbuffer;
glGenBuffers(1, &vertexbuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW);
GLuint uvbuffer;
glGenBuffers(1, &uvbuffer);
glBindBuffer(GL_ARRAY_BUFFER, uvbuffer);
glBufferData(GL_ARRAY_BUFFER, uvs.size() * sizeof(glm::vec2), &uvs[0], GL_STATIC_DRAW);
GLuint normalbuffer;
glGenBuffers(1, &normalbuffer);
glBindBuffer(GL_ARRAY_BUFFER, normalbuffer);
glBufferData(GL_ARRAY_BUFFER, normals.size() * sizeof(glm::vec3), &normals[0], GL_STATIC_DRAW);
// Get a handle for our "LightPosition" uniform
glUseProgram(programID);
GLuint LightID = glGetUniformLocation(programID, "LightPosition_worldspace");
do{
// Clear the screen
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Use our shader
glUseProgram(programID);
// Compute the MVP matrix from keyboard and mouse input
computeMatricesFromInputs();
glm::mat4 ProjectionMatrix = getProjectionMatrix2();
glm::mat4 ViewMatrix = getViewMatrix2();
// glm::mat4 ViewMatrix = glm::Rotate(ViewMatrix,5, glm::vec3(-1.0f, 0.0f, 0.0f));
glm::mat4 ModelMatrix = glm::mat4(1.0);
glm::mat4 MVP = ProjectionMatrix * ViewMatrix * ModelMatrix;
// Send our transformation to the currently bound shader,
// in the "MVP" uniform
glUniformMatrix4fv(MatrixID, 1, GL_FALSE, &MVP[0][0]);
glUniformMatrix4fv(ModelMatrixID, 1, GL_FALSE, &ModelMatrix[0][0]);
glUniformMatrix4fv(ViewMatrixID, 1, GL_FALSE, &ViewMatrix[0][0]);
glm::vec3 lightPos = glm::vec3(4,2,4);
glUniform3f(LightID, lightPos.x, lightPos.y, lightPos.z);
// Bind our texture in Texture Unit 0
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, Texture);
// Set our "myTextureSampler" sampler to user Texture Unit 0
glUniform1i(TextureID, 0);
// 1rst attribute buffer : vertices
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glVertexAttribPointer(
0, // attribute
3, // size
GL_FLOAT, // type
GL_FALSE, // normalized?
0, // stride
(void*)0 // array buffer offset
);
// 2nd attribute buffer : UVs
//.........这里部分代码省略.........
示例6: glClearColor
void OpeningCutScene2::Init()
{
// Init VBO here
// Set background color to dark blue
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
//Enable depth buffer and depth testing
glEnable(GL_DEPTH_TEST);
//Enable back face culling
glEnable(GL_CULL_FACE);
//Default to fill mode
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// Generate a default VAO for now
glGenVertexArrays(1, &m_vertexArrayID);
glBindVertexArray(m_vertexArrayID);
m_programID = LoadShaders("Shader//Texture.vertexshader", "Shader//Text.fragmentshader");
m_parameters[U_MVP] = glGetUniformLocation(m_programID, "MVP");
m_parameters[U_MODELVIEW] = glGetUniformLocation(m_programID, "MV");
m_parameters[U_MODELVIEW_INVERSE_TRANSPOSE] = glGetUniformLocation(m_programID, "MV_inverse_transpose");
m_parameters[U_MATERIAL_AMBIENT] = glGetUniformLocation(m_programID, "material.kAmbient");
m_parameters[U_MATERIAL_DIFFUSE] = glGetUniformLocation(m_programID, "material.kDiffuse");
m_parameters[U_MATERIAL_SPECULAR] = glGetUniformLocation(m_programID, "material.kSpecular");
m_parameters[U_MATERIAL_SHININESS] = glGetUniformLocation(m_programID, "material.kShininess");
m_parameters[U_LIGHT0_POSITION] = glGetUniformLocation(m_programID, "lights[0].position_cameraspace");
m_parameters[U_LIGHT0_COLOR] = glGetUniformLocation(m_programID, "lights[0].color");
m_parameters[U_LIGHT0_POWER] = glGetUniformLocation(m_programID, "lights[0].power");
m_parameters[U_LIGHT0_KC] = glGetUniformLocation(m_programID, "lights[0].kC");
m_parameters[U_LIGHT0_KL] = glGetUniformLocation(m_programID, "lights[0].kL");
m_parameters[U_LIGHT0_KQ] = glGetUniformLocation(m_programID, "lights[0].kQ");
m_parameters[U_LIGHT0_TYPE] = glGetUniformLocation(m_programID, "lights[0].type");
m_parameters[U_LIGHT0_SPOTDIRECTION] = glGetUniformLocation(m_programID, "lights[0].spotDirection");
m_parameters[U_LIGHT0_COSCUTOFF] = glGetUniformLocation(m_programID, "lights[0].cosCutoff");
m_parameters[U_LIGHT0_COSINNER] = glGetUniformLocation(m_programID, "lights[0].cosInner");
m_parameters[U_LIGHT0_EXPONENT] = glGetUniformLocation(m_programID, "lights[0].exponent");
m_parameters[U_LIGHTENABLED] = glGetUniformLocation(m_programID, "lightEnabled");
m_parameters[U_NUMLIGHTS] = glGetUniformLocation(m_programID, "numLights");
m_parameters[U_COLOR_TEXTURE_ENABLED] = glGetUniformLocation(m_programID, "colorTextureEnabled");
m_parameters[U_COLOR_TEXTURE] = glGetUniformLocation(m_programID, "colorTexture");
m_parameters[U_TEXT_ENABLED] = glGetUniformLocation(m_programID, "textEnabled");
m_parameters[U_TEXT_COLOR] = glGetUniformLocation(m_programID, "textColor");
glUseProgram(m_programID);
light[0].type = Light::LIGHT_SPOT;
light[0].position.Set(camera.position.x, camera.position.y, camera.position.z);
light[0].color.Set(1, 1, 1);
light[0].power = 2.0f;
light[0].kC = 1.f;
light[0].kL = 0.01f;
light[0].kQ = 0.001f;
light[0].cosCutoff = cos(Math::DegreeToRadian(30));
light[0].cosInner = cos(Math::DegreeToRadian(15));
light[0].exponent = 3.f;
light[0].spotDirection.Set(-(camera.target.x - camera.position.x), -(camera.target.y - camera.position.y), -(camera.target.z - camera.position.z));
// Pass information
glUniform1i(m_parameters[U_NUMLIGHTS], 1);
glUniform1i(m_parameters[U_LIGHT0_TYPE], light[0].type);
glUniform3fv(m_parameters[U_LIGHT0_COLOR], 1, &light[0].color.r);
glUniform1f(m_parameters[U_LIGHT0_POWER], light[0].power);
glUniform1f(m_parameters[U_LIGHT0_KC], light[0].kC);
glUniform1f(m_parameters[U_LIGHT0_KL], light[0].kL);
glUniform1f(m_parameters[U_LIGHT0_KQ], light[0].kQ);
glUniform1f(m_parameters[U_LIGHT0_COSCUTOFF], light[0].cosCutoff);
glUniform1f(m_parameters[U_LIGHT0_COSINNER], light[0].cosInner);
glUniform1f(m_parameters[U_LIGHT0_EXPONENT], light[0].exponent);
//Initialize camera settings
camera.Init(Vector3(0, 10, 0), Vector3(0, 15, 1), Vector3(0, 1, 0));
meshList[GEO_AXES] = MeshBuilder::GenerateAxes("reference", 1000, 1000, 1000);
meshList[GEO_LIGHTBALL] = MeshBuilder::GenerateSphere("lightball", Color(1, 1, 1), 10, 20);
meshList[GEO_FRONT] = MeshBuilder::GenerateQuad("front", Color(1, 1, 1));
meshList[GEO_FRONT]->textureID = LoadTGA("Image//SkyBox1_front.tga");
meshList[GEO_LEFT] = MeshBuilder::GenerateQuad("left", Color(1, 1, 1));
meshList[GEO_LEFT]->textureID = LoadTGA("Image//SkyBox1_left.tga");
meshList[GEO_RIGHT] = MeshBuilder::GenerateQuad("right", Color(1, 1, 1));
meshList[GEO_RIGHT]->textureID = LoadTGA("Image//SkyBox1_right.tga");
meshList[GEO_TOP] = MeshBuilder::GenerateQuad("top", Color(1, 1, 1));
meshList[GEO_TOP]->textureID = LoadTGA("Image//SkyBox1_up.tga");
meshList[GEO_BOTTOM] = MeshBuilder::GenerateQuad("SkyBox1_down", Color(1, 1, 1));
meshList[GEO_BOTTOM]->textureID = LoadTGA("Image//SkyBox1_down.tga");
meshList[GEO_BACK] = MeshBuilder::GenerateQuad("SkyBox1_back", Color(1, 1, 1));
meshList[GEO_BACK]->textureID = LoadTGA("Image//SkyBox1_back.tga");
meshList[GEO_QUAD] = MeshBuilder::GenerateQuad("SceneOpening", Color(0, 0, 0));
meshList[GEO_TEXT] = MeshBuilder::GenerateText("text", 16, 16);
//.........这里部分代码省略.........
示例7: main
int main(void)
{
GLFWwindow* window;
glfwSetErrorCallback(error_callback);
if (!glfwInit())
exit(EXIT_FAILURE);
window = glfwCreateWindow(1024, 768, "Simple example", NULL, NULL);
if (!window)
{
glfwTerminate();
exit(EXIT_FAILURE);
}
glfwMakeContextCurrent(window);
glfwSetKeyCallback(window, key_callback);
// Initialize GLEW
glewExperimental = true; // Needed for core profile
if (glewInit() != GLEW_OK) {
fprintf(stderr, "Failed to initialize GLEW\n");
return -1;
}
// Create and compile our GLSL program from the shaders
GLuint programID = LoadShaders( "../resources/shaders/SimpleVertexShader.vertexshader", "../resources/shaders/SimpleFragmentShader.fragmentshader" );
initGL();
Tunnel *myTunnel = new Tunnel(vec3(0.0f,0.0f,1.0f), 2, 1.0f, 1.0f);
Tunnel myTunnel2 = Tunnel(vec3(0.0f,0.0f,-3.0f), 2, 1.0f, 1.0f);
for (int i=0; i<10; i++){
Cube3d *myCube = new Cube3d(0.5f, vec3(0.0f,0.0f,(GLfloat) -i));
myCubeVect.push_back(myCube);
}
//Cube3d *myCube = new Cube3d(0.5f);
while (!glfwWindowShouldClose(window))
{
playerPos = (int) camPosZ;
int index = playerPos;
if(index>10){
int div = (int) playerPos/10;
index = playerPos - div*10;
}
// printf("playerPos=%d; index=%d\n", playerPos, index);
if (index>0)
{
myCubeVect[index-1]->setTranslation(vec3(0.0f,0.0f,-10.0f));
}
//myCube2->setTranslation(vec3(0.0f,0.0f,-playerPos));
/* Clear The Screen And The Depth Buffer */
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
float ratio;
int width, height;
glfwGetFramebufferSize(window, &width, &height);
ratio = width / (float) height;
glViewport(0, 0, width, height);
// glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
/* Set our perspective */
gluPerspective( 45.0f, ratio, 0.1f, 500.0f );
//glOrtho(-ratio, ratio, -1.f, 1.f, 1.f, -1.f);
//gluOrtho2D( 0,width,0,height );
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glLoadIdentity();
glRotatef(camRotY, 0.0f, 1.0f, 0.0f);
//glTranslatef(0, 0, 5);
glTranslatef(camPosX, camPosY, camPosZ);
//>>>>>>>>>>>>>>>>>>START drawing our level<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
/*for(int i=0; i<myCubeVect.size(); ++i)
{
myCubeVect[i]->draw();
}*/
myTunnel->draw();
myTunnel2.draw();
/*glBegin(GL_LINES);
glVertex3f(0.0f, 1.0f, 0.0f);
glVertex3f(sinf(pi/4), cosf(pi/4),0.0f);
glVertex3f(sinf(pi/4), cosf(pi/4),0.0f);
glVertex3f(sinf(pi/2), cosf(pi/2),0.0f);
glVertex3f(sinf(pi/2), cosf(pi/2),0.0f);
glVertex3f(sinf(3*pi/4), cosf(3*pi/4),0.0f);
glVertex3f(sinf(3*pi/4), cosf(3*pi/4),0.0f);
//.........这里部分代码省略.........
示例8: Render
void Render() {
GLuint VertexArrayID;
glGenVertexArrays(1, &VertexArrayID);
glBindVertexArray(VertexArrayID);
GLuint programID = LoadShaders("vertex.glsl", "fragment.glsl");
GLfloat g_vertex_buffer_data[max_n][2];
GLuint vertexbuffer;
glGenBuffers(1, &vertexbuffer);
float central_angle = 2 * PI / N;
// float step_d = step / sin((PI - central_angle) / 2) * sin(central_angle);
float step_d = step;
glm::vec2 direction = glm::normalize(glm::vec2(step_d, 0));
glm::vec2 direction_d = glm::rotate(glm::vec2(0, -1), float(-360.0 / N / 2));
// glm::vec2 position = direction_d * step;
glm::vec2 position = glm::vec2(0, 0);
int n = 0;
float ratio = 0;
do {
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(programID);
step_d = step;
direction = glm::normalize(glm::vec2(step_d, 0));
position = glm::vec2(0, 0);
g_vertex_buffer_data[0][0] = position.x * window_ratio;
g_vertex_buffer_data[0][1] = position.y;
for(int j = 0; j < 1000; j++) {
for(int i = 1; i <= N; i++) {
position += direction * step_d * (i == n ? ratio : 1);
g_vertex_buffer_data[j * 10 + i][0] = position.x * window_ratio;
g_vertex_buffer_data[j * 10 + i][1] = position.y;
direction = glm::rotate(direction, float(360.0 / N * 2));
// step_d *= 0.95;
}
step_d *= 0.99;
direction = glm::rotate(direction, float(360.0 / 36));
}
n = 1000 * N;
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glBufferData(GL_ARRAY_BUFFER, (n + 1) * sizeof(GLfloat) * 2, g_vertex_buffer_data, GL_DYNAMIC_DRAW);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glVertexAttribPointer(
0, // The attribute we want to configure
2, // size
GL_FLOAT, // type
GL_FALSE, // normalized?
0, // stride
(void*)0 // array buffer offset
);
glDrawArrays(GL_LINE_STRIP, 0, n + 1);
glDisableVertexAttribArray(0);
glfwSwapBuffers(window);
glfwPollEvents();
usleep(500);
ratio += 0.01;
if(ratio >= 1) n++, ratio = 0;
} while(glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS && !glfwWindowShouldClose(window));
glDeleteBuffers(1, &vertexbuffer);
glDeleteVertexArrays(1, &VertexArrayID);
glDeleteProgram(programID);
}
示例9: InitView
/*!****************************************************************************
@Function InitView
@Return bool true if no error occurred
@Description Code in InitView() will be called by PVRShell upon
initialization or after a change in the rendering context.
Used to initialize variables that are dependant on the rendering
context (e.g. textures, vertex buffers, etc.)
******************************************************************************/
bool OGLES2FilmTV::InitView()
{
CPVRTString ErrorStr;
// Initialize VBO data
if(!LoadVbos(&ErrorStr))
{
PVRShellSet(prefExitMessage, ErrorStr.c_str());
return false;
}
// Load textures
if(!LoadTextures(&ErrorStr))
{
PVRShellSet(prefExitMessage, ErrorStr.c_str());
return false;
}
// Load and compile the shaders & link programs
if(!LoadShaders(&ErrorStr))
{
PVRShellSet(prefExitMessage, ErrorStr.c_str());
return false;
}
// Initialize Print3D
bool bRotate = PVRShellGet(prefIsRotated) && PVRShellGet(prefFullScreen);
if(m_Print3D.SetTextures(0,PVRShellGet(prefWidth),PVRShellGet(prefHeight), bRotate) != PVR_SUCCESS)
{
PVRShellSet(prefExitMessage, "ERROR: Cannot initialise Print3D\n");
return false;
}
//Set OpenGL ES render states needed for this demo
// Enable backface culling and depth test
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
// Find the largest square power of two texture that fits into the viewport
m_i32TexSize = 1;
int iSize = PVRT_MIN(PVRShellGet(prefWidth), PVRShellGet(prefHeight));
while (m_i32TexSize * 2 < iSize) m_i32TexSize *= 2;
// Get the currently bound frame buffer object. On most platforms this just gives 0.
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &m_i32OriginalFB);
for(int i = 0; i < 2; ++i)
{
// Create texture for the FBO
glGenTextures(1, &m_uiTexture[i]);
glBindTexture(GL_TEXTURE_2D, m_uiTexture[i]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, m_i32TexSize, m_i32TexSize, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, 0);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
// Create FBO
glGenFramebuffers(1, &m_uiFbo[i]);
glBindFramebuffer(GL_FRAMEBUFFER, m_uiFbo[i]);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_uiTexture[i], 0);
glGenRenderbuffers(1, &m_uiDepthBuffer[i]);
glBindRenderbuffer(GL_RENDERBUFFER, m_uiDepthBuffer[i]);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, m_i32TexSize, m_i32TexSize);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, m_uiDepthBuffer[i]);
// Check that our FBO creation was successful
GLuint uStatus = glCheckFramebufferStatus(GL_FRAMEBUFFER);
if(uStatus != GL_FRAMEBUFFER_COMPLETE)
{
m_bFBOsCreated = false;
PVRShellOutputDebug("ERROR: Failed to initialise FBO");
break;
}
// Clear the colour buffer for this FBO
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
glBindFramebuffer(GL_FRAMEBUFFER, m_i32OriginalFB);
// Setup the main camera
//.........这里部分代码省略.........
示例10: LoadShaders
void Ex08_13::InitGL()
{
if (! LoadGL() )
return;
ShaderInfo object_shaders[] = {
{ GL_VERTEX_SHADER, "Shaders/sh08_13.vert" },
{ GL_FRAGMENT_SHADER, "Shaders/sh08_13.frag" },
{ GL_NONE, NULL }
};
object_prog = LoadShaders( object_shaders );
glGenBuffers(1, &quad_vbo);
glBindBuffer(GL_ARRAY_BUFFER, quad_vbo);
static const GLfloat quad_data[] =
{
0.75f, -0.75f,
-0.75f, -0.75f,
-0.75f, 0.75f,
0.75f, 0.75f,
0.0f, 0.0f,
1.0f, 0.0f,
1.0f, 1.0f,
0.0f, 1.0f,
0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 1.0f
};
glBufferData(GL_ARRAY_BUFFER, sizeof(quad_data), quad_data, GL_STATIC_DRAW);
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(8 * sizeof(float)));
glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET((8 + 8) * sizeof(float)));
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glLinkProgram(object_prog);
object_mat_mv_loc = glGetUniformLocation(object_prog, "MVMatrix");
object_mat_mvp_loc = glGetUniformLocation(object_prog, "MVPMatrix");
GLuint NormalMatrix_loc = glGetUniformLocation(object_prog, "NormalMatrix");
GLuint LightPosition_loc = glGetUniformLocation(object_prog, "LightPosition");
GLuint Color0_loc = glGetUniformLocation(object_prog, "Color0");
GLuint Color1_loc = glGetUniformLocation(object_prog, "Color1");
GLuint AvgColor_loc = glGetUniformLocation(object_prog, "AvgColor");
GLuint Frequency_loc = glGetUniformLocation(object_prog, "Frequency");
glUseProgram(object_prog);
GLfloat normal_matrix[3 * 3] = {
0.5f, 0.0f, 0.0f,
0.0f, 0.5f, 0.0f,
0.0f, 0.0f, 1.0f
};
glUniformMatrix3fv(NormalMatrix_loc, 1, GL_TRUE, normal_matrix);
glUniform3fv(LightPosition_loc, 1, vmath::vec3(0.0f, 0.0f, -1.0f));
glUniform3fv(Color0_loc, 1, vmath::vec3(0.0f, 0.0f, 0.7f));
glUniform3fv(Color1_loc, 1, vmath::vec3(1.0f, 1.0f, 0.0f));
glUniform3fv(AvgColor_loc, 1, vmath::vec3(1.0f, 1.0f, 1.0f));
glUniform1f(Frequency_loc, 3.0f);
}
示例11: Direct3DCreate9
//.........这里部分代码省略.........
D3DPRESENT_PARAMETERS presentParams;
ZeroMemory( &presentParams, sizeof( presentParams ) );
presentParams.Windowed = TRUE;
presentParams.SwapEffect = D3DSWAPEFFECT_DISCARD;
presentParams.BackBufferFormat = D3DFMT_UNKNOWN; //D3DFMT_X8R8G8B8;
presentParams.EnableAutoDepthStencil = TRUE;
presentParams.AutoDepthStencilFormat = D3DFMT_D24S8;
presentParams.PresentationInterval = D3DPRESENT_INTERVAL_ONE;
presentParams.BackBufferCount = 1;
presentParams.MultiSampleType = D3DMULTISAMPLE_8_SAMPLES;
presentParams.MultiSampleQuality = 1;
d3d9->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &presentParams, &device );
if (!device)
{
presentParams.MultiSampleType = D3DMULTISAMPLE_NONE;
presentParams.MultiSampleQuality = 0;
d3d9->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &presentParams, &device );
}
if (!device)
{
Cleanup();
return false;
}
const D3DVERTEXELEMENT9 decl[] =
{
{ 0, 0, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 },
D3DDECL_END()
};
device->CreateVertexDeclaration( decl, &vertexDecl );
if (!vertexDecl)
{
Cleanup();
return false;
}
if (!CreateQuad())
{
Cleanup();
return false;
}
D3DXCreateTextureFromFileEx(device, L"InitialState.dds", D3DX_DEFAULT_NONPOW2, D3DX_DEFAULT_NONPOW2, D3DX_FROM_FILE, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, 0, NULL, NULL, &initialState);
if (!initialState)
{
Cleanup();
return false;
}
D3DSURFACE_DESC textureDesc;
initialState->GetLevelDesc(0, &textureDesc);
device->CreateTexture(textureDesc.Width, textureDesc.Height, 1, D3DUSAGE_RENDERTARGET, textureDesc.Format, D3DPOOL_DEFAULT, &state0, NULL);
if (!state0)
{
Cleanup();
return false;
}
device->CreateTexture(textureDesc.Width, textureDesc.Height, 1, D3DUSAGE_RENDERTARGET, textureDesc.Format, D3DPOOL_DEFAULT, &state1, NULL);
if (!state1)
{
Cleanup();
return false;
}
device->GetRenderTarget(0, &rtMain);
if (!rtMain)
{
Cleanup();
return false;
}
state0->GetSurfaceLevel(0, &rtState0);
if (!rtState0)
{
Cleanup();
return false;
}
state1->GetSurfaceLevel(0, &rtState1);
if (!rtState1)
{
Cleanup();
return false;
}
LoadShaders();
Reset();
return true;
}
示例12: main
int main(int arc, char **argv) {
// Initialize SDL
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
logSDLError(std::cout, "SDL_Init");
return 1;
}
// Create a window
SDL_Window *win = SDL_CreateWindow("Hello World!", 100, 100, SCREEN_WIDTH,
SCREEN_HEIGHT, SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL);
if (win == nullptr) {
logSDLError(std::cout, "SDL_CreateWindow");
return 2;
}
if (FULLSCREEN) {
SDL_SetWindowFullscreen(win, SDL_WINDOW_FULLSCREEN_DESKTOP);
}
// Initialize and set up OpenGL
SDL_GLContext sdl_opengl_context = SDL_GL_CreateContext(win);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 4);
SDL_GL_SetSwapInterval(1);
// Initialize GLEW
if (glewInit() != GLEW_OK) {
logGLEWError(std::cout, "glewInit");
return 3;
}
GLuint programID = LoadShaders("../gl_rift/src/VertexShader.glsl", "../gl_rift/src/FragmentShader.glsl");
glUseProgram(programID);
//startup();
// Rendering loop
int rendering = 1;
while (rendering) {
draw_stereo(programID);
//render(SDL_GetTicks() /100);
SDL_GL_SwapWindow(win);
SDL_Event event;
while (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_QUIT:
rendering = 0;
case SDL_KEYDOWN:
break;
case SDL_KEYUP:
if (event.key.keysym.sym == SDLK_ESCAPE) {
rendering = 0;
}
break;
}
}
}
glDeleteProgram(programID);
SDL_GL_DeleteContext(sdl_opengl_context);
SDL_DestroyWindow(win);
SDL_Quit();
return 0;
}
示例13: SdlDoEvent
/**
** Handle interactive input event.
**
** @param callbacks Callback structure for events.
** @param event SDL event structure pointer.
*/
static void SdlDoEvent(const EventCallback &callbacks, SDL_Event &event)
{
#if (defined(USE_OPENGL) || defined(USE_GLES))
// Scale mouse-coordinates to viewport
if (ZoomNoResize && (event.type & (SDL_MOUSEBUTTONUP | SDL_MOUSEBUTTONDOWN | SDL_MOUSEMOTION))) {
event.button.x = (Uint16)floorf(event.button.x * float(Video.Width) / Video.ViewportWidth);
event.button.y = (Uint16)floorf(event.button.y * float(Video.Height) / Video.ViewportHeight);
}
#endif
switch (event.type) {
case SDL_MOUSEBUTTONDOWN:
InputMouseButtonPress(callbacks, SDL_GetTicks(), event.button.button);
break;
case SDL_MOUSEBUTTONUP:
InputMouseButtonRelease(callbacks, SDL_GetTicks(), event.button.button);
break;
// FIXME: check if this is only useful for the cursor
// FIXME: if this is the case we don't need this.
case SDL_MOUSEMOTION:
InputMouseMove(callbacks, SDL_GetTicks(), event.motion.x, event.motion.y);
// FIXME: Same bug fix from X11
if ((UI.MouseWarpPos.x != -1 || UI.MouseWarpPos.y != -1)
&& (event.motion.x != UI.MouseWarpPos.x || event.motion.y != UI.MouseWarpPos.y)) {
int xw = UI.MouseWarpPos.x;
int yw = UI.MouseWarpPos.y;
UI.MouseWarpPos.x = -1;
UI.MouseWarpPos.y = -1;
SDL_WarpMouse(xw, yw);
}
break;
case SDL_ACTIVEEVENT:
if (event.active.state & SDL_APPMOUSEFOCUS) {
static bool InMainWindow = true;
if (InMainWindow && !event.active.gain) {
InputMouseExit(callbacks, SDL_GetTicks());
}
InMainWindow = (event.active.gain != 0);
}
if (!IsNetworkGame() && Preference.PauseOnLeave && (event.active.state & SDL_APPACTIVE || SDL_GetAppState() & SDL_APPACTIVE)) {
static bool DoTogglePause = false;
if (IsSDLWindowVisible && !event.active.gain) {
IsSDLWindowVisible = false;
if (!GamePaused) {
DoTogglePause = true;
UiTogglePause();
}
} else if (!IsSDLWindowVisible && event.active.gain) {
IsSDLWindowVisible = true;
if (GamePaused && DoTogglePause) {
DoTogglePause = false;
UiTogglePause();
}
}
}
break;
case SDL_KEYDOWN:
if (GLShaderPipelineSupported
&& event.key.keysym.sym == SDLK_SLASH
&& event.key.keysym.mod & KMOD_ALT
&& event.key.keysym.mod & KMOD_CTRL) {
LoadShaders();
break;
}
InputKeyButtonPress(callbacks, SDL_GetTicks(),
event.key.keysym.sym, event.key.keysym.unicode);
break;
case SDL_KEYUP:
InputKeyButtonRelease(callbacks, SDL_GetTicks(),
event.key.keysym.sym, event.key.keysym.unicode);
break;
case SDL_QUIT:
Exit(0);
break;
}
if (&callbacks == GetCallbacks()) {
handleInput(&event);
}
}
示例14: glClearColor
void CSceneManager2D::Init()
{
// Blue background
glClearColor(0.0f, 0.0f, 0.4f, 0.0f);
// Switch on culling
glEnable(GL_CULL_FACE);
// Render mode
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
// Activate blending
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// Generate and bind vertex array
glGenVertexArrays(1, &m_vertexArrayID);
glBindVertexArray(m_vertexArrayID);
// Load the shaders
m_programID = LoadShaders( "Shader//Texture.vertexshader", "Shader//Text.fragmentshader" );
// Get a handle for our uniform
m_parameters[U_MVP] = glGetUniformLocation(m_programID, "MVP");
//m_parameters[U_MODEL] = glGetUniformLocation(m_programID, "M");
//m_parameters[U_VIEW] = glGetUniformLocation(m_programID, "V");
m_parameters[U_MODELVIEW] = glGetUniformLocation(m_programID, "MV");
m_parameters[U_MODELVIEW_INVERSE_TRANSPOSE] = glGetUniformLocation(m_programID, "MV_inverse_transpose");
// Get a handle for our "colorTexture" uniform
m_parameters[U_COLOR_TEXTURE_ENABLED] = glGetUniformLocation(m_programID, "colorTextureEnabled");
m_parameters[U_COLOR_TEXTURE] = glGetUniformLocation(m_programID, "colorTexture");
// Get a handle for our "textColor" uniform
m_parameters[U_TEXT_ENABLED] = glGetUniformLocation(m_programID, "textEnabled");
m_parameters[U_TEXT_COLOR] = glGetUniformLocation(m_programID, "textColor");
// Use our shader
glUseProgram(m_programID);
glUniform1i(m_parameters[U_TEXT_ENABLED], 0);
// Initialise the camera
camera.Init(Vector3(0, 0, 10), Vector3(0, 0, 0), Vector3(0, 1, 0));
// Create the meshes
for(int i = 0; i < NUM_GEOMETRY; ++i)
{
meshList[i] = NULL;
}
meshList[GEO_TEXT] = MeshBuilder::GenerateText("text", 16, 16);
meshList[GEO_TEXT]->textureID = LoadTGA("Image//calibri.tga");
meshList[GEO_TEXT]->material.kAmbient.Set(1, 0, 0);
// Load the ground mesh and texture
meshList[GEO_BACKGROUND] = MeshBuilder::Generate2DMesh("GEO_BACKGROUND", Color(1, 1, 1), 0, 0, 800, 600);
meshList[GEO_BACKGROUND]->textureID = LoadTGA("Image//sky_background.tga");
meshList[GEO_TILEGROUND] = MeshBuilder::Generate2DMesh("GEO_TILEGROUND", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILEGROUND]->textureID = LoadTGA("Image//tile1_ground.tga");
meshList[GEO_TILEHERO] = MeshBuilder::Generate2DMesh("GEO_TILEHERO", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILEHERO]->textureID = LoadTGA("Image//tile2_hero.tga");
meshList[GEO_TILETREE] = MeshBuilder::Generate2DMesh("GEO_TILETREE", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILETREE]->textureID = LoadTGA("Image//tile3_tree.tga");
meshList[GEO_TILESTRUCTURE] = MeshBuilder::Generate2DMesh("GEO_TILESTRUCTURE", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILESTRUCTURE]->textureID = LoadTGA("Image//tile3_structure.tga");
meshList[GEO_TILEHERO_FRAME0] = MeshBuilder::Generate2DMesh("GEO_TILEHERO_FRAME0", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILEHERO_FRAME0]->textureID = LoadTGA("Image//tile2_hero_frame_0.tga");
meshList[GEO_TILEHERO_FRAME1] = MeshBuilder::Generate2DMesh("GEO_TILEHERO_FRAME1", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILEHERO_FRAME1]->textureID = LoadTGA("Image//tile2_hero_frame_1.tga");
meshList[GEO_TILEHERO_FRAME2] = MeshBuilder::Generate2DMesh("GEO_TILEHERO_FRAME2", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILEHERO_FRAME2]->textureID = LoadTGA("Image//tile2_hero_frame_2.tga");
meshList[GEO_TILEHERO_FRAME3] = MeshBuilder::Generate2DMesh("GEO_TILEHERO_FRAME3", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILEHERO_FRAME3]->textureID = LoadTGA("Image//tile2_hero_frame_3.tga");
meshList[GEO_TILE_KILLZONE] = MeshBuilder::Generate2DMesh("GEO_TILE_KILLZONE", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILE_KILLZONE]->textureID = LoadTGA("Image//tile10_killzone.tga");
meshList[GEO_TILE_SAFEZONE] = MeshBuilder::Generate2DMesh("GEO_TILE_SAFEZONE", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILE_SAFEZONE]->textureID = LoadTGA("Image//tile11_safezone.tga");
meshList[GEO_TILEENEMY_FRAME0] = MeshBuilder::Generate2DMesh("GEO_TILEENEMY_FRAME0", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILEENEMY_FRAME0]->textureID = LoadTGA("Image//tile20_enemy.tga");
meshList[GEO_MENU] = MeshBuilder::Generate2DMesh("GEO_MENU", Color(1, 1, 1), 0, 0, 800, 600);
meshList[GEO_MENU]->textureID = LoadTGA("Image//MainMenu.tga");
meshList[GEO_HIGHSCORE] = MeshBuilder::Generate2DMesh("GEO_HIGHSCORE", Color(1, 1, 1), 0, 0, 800, 600);
meshList[GEO_HIGHSCORE]->textureID = LoadTGA("Image//Highscore.tga");
meshList[GEO_OPTION1] = MeshBuilder::Generate2DMesh("GEO_OPTION1", Color(1, 1, 1), 0, 0, 800, 600);
meshList[GEO_OPTION1]->textureID = LoadTGA("Image//OptionsSoundOn.tga");
meshList[GEO_INSTRUCTION] = MeshBuilder::Generate2DMesh("GEO_INSTRUCTIONS", Color(1, 1, 1), 0, 0, 800, 600);
meshList[GEO_INSTRUCTION]->textureID = LoadTGA("Image//Instructions.tga");
meshList[GEO_SELECT] = MeshBuilder::Generate2DMesh("GEO_SELECT", Color(1, 1, 1), 0, 0, 75, 55);
meshList[GEO_SELECT]->textureID = LoadTGA("Image//Select.tga");
meshList[GEO_SPRITE_ANIMATION] = MeshBuilder::GenerateSpriteAnimation("cat", 1, 6);
meshList[GEO_SPRITE_ANIMATION]->textureID = LoadTGA("Image//cat.tga");
m_spriteAnimation = dynamic_cast<SpriteAnimation*>(meshList[GEO_SPRITE_ANIMATION]);
if (m_spriteAnimation)
{
m_spriteAnimation->m_anim = new Animation();
m_spriteAnimation->m_anim->Set(0, 5, 0, 0.1f);
//.........这里部分代码省略.........
示例15: colorcube
void CChildView::InitGL()
{
// Create a checkerboard pattern
for (int i = 0; i < 64; i++) {
for (int j = 0; j < 64; j++) {
GLubyte c;
c = (((i & 0x8) == 0) ^ ((j & 0x8) == 0)) * 255;
image[i][j][0] = c;
image[i][j][1] = c;
image[i][j][2] = c;
image2[i][j][0] = c;
image2[i][j][1] = 0;
image2[i][j][2] = c;
}
}
colorcube();
m_program = LoadShaders( "ShaderWnd/vertex.glsl", "ShaderWnd/fragment.glsl" );
static const vec4 g_vertex_buffer_data[] = {
vec4(-1.0f, -1.0f, 0.0f, 1.0f),
vec4(1.0f, -1.0f, 0.0f, 1.0f),
vec4(0.0f, 0.5f, 0.0f, 1.0f)
};
static const vec4 g_color_buffer_data[] = {
vec4(1.0f, 0.0f, 0.0f, 1.0f),
vec4(0.0f, 1.0f, 0.0f, 1.0f),
vec4(0.0f, 0.0f, 1.0f, 1.0f)
};
//GLuint vertexbuffer;
glUseProgram(m_program);
GLuint vao;
glGenVertexArrays( 1, &vao);
glBindVertexArray( vao);
/*glGenBuffers(1, &vertexbuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW);*/
glGenTextures(2, textures);
glBindTexture(GL_TEXTURE_2D, textures[0]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TextureSize,TextureSize, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glBindTexture(GL_TEXTURE_2D, textures[1]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TextureSize,TextureSize, 0, GL_RGB, GL_UNSIGNED_BYTE, image2);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glActiveTexture( GL_TEXTURE0 );
glBindTexture( GL_TEXTURE_2D, textures[0]);
glActiveTexture( GL_TEXTURE1 );
glBindTexture( GL_TEXTURE_2D, textures[1]);
// Create and initialize a buffer object
GLuint buffer;
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(points) + sizeof(tex_coords) + sizeof(normals), NULL, GL_STATIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(points), value_ptr(points[0]));
glBufferSubData(GL_ARRAY_BUFFER, sizeof(points), sizeof(normals), value_ptr(normals[0]));
glBufferSubData(GL_ARRAY_BUFFER, sizeof(points) + sizeof(normals), sizeof(tex_coords), value_ptr(tex_coords[0]));
point4 light_position (-5.f, 5.f, -5.f, 0.f);
color4 light_ambient (0.2f, 0.2f, 0.2f, 1.f);
color4 light_diffuse (1.f, 1.f, 1.f, 1.f);
color4 light_specular (1.f, 1.f, 1.f, 1.f);
color4 material_ambient(.3f, .6f, .3f, 1.f);
color4 material_diffuse (0.3f, .6f, 0.3f, 1.f);
color4 material_specular (1.f, 1.f, 1.f, 1.f);
float material_shininess = 100.0f;
color4 ambient_product = light_ambient*material_ambient;
color4 diffuse_product = light_diffuse*material_diffuse;
color4 specular_product = light_specular*material_specular;
glUniform4fv(glGetUniformLocation(m_program, "AmbientProduct"), 1, value_ptr(ambient_product));
glUniform4fv(glGetUniformLocation(m_program, "DiffuseProduct"), 1, value_ptr(diffuse_product));
glUniform4fv(glGetUniformLocation(m_program, "SpecularProduct"), 1, value_ptr(specular_product));
glUniform4fv(glGetUniformLocation(m_program, "LightPosition"), 1, value_ptr(light_position));
glUniform1f(glGetUniformLocation(m_program, "Shininess"), material_shininess);
// set up vertex arrays (after shaders are loaded)
GLuint vPosition = glGetAttribLocation(m_program, "vPosition");
glEnableVertexAttribArray(vPosition);
glVertexAttribPointer(vPosition, 4, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));
//.........这里部分代码省略.........