本文整理汇总了C++中ShaderLoader::loadShader方法的典型用法代码示例。如果您正苦于以下问题:C++ ShaderLoader::loadShader方法的具体用法?C++ ShaderLoader::loadShader怎么用?C++ ShaderLoader::loadShader使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ShaderLoader
的用法示例。
在下文中一共展示了ShaderLoader::loadShader方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: initGL
/**
* initGL() - create and configure OpenGL resources
*
* @return bool true if initialization is a success
*/
bool GLManager::initGL()
{
// success flag
bool success = true;
// generate program
programID = glCreateProgram();
// enable z-buffer face culling
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
// transparency
//glEnable(GL_BLEND);
//glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// enable vsync rate
if (SDL_GL_SetSwapInterval(1) < 0)
std::cout << "Swap Interval could not be set!" << std::endl;
// vertex & fragment shaders
vertexShader = 0;
fragmentShader = 0;
ShaderLoader loader;
// load vertex shader
int failCount = 0;
while (vertexShader == 0) {
vertexShader = loader.loadShader( OsType::osConvert("shaders/phongAttenuation.vert"), programID );
++failCount;
if (failCount >= 1000) {
std::cout << "Loading vertexShader failed!" << std::endl;
failCount = 0;
break;
}
}
// load fragment shader
while (fragmentShader == 0) {
fragmentShader = loader.loadShader( OsType::osConvert("shaders/phongAttenuation.frag"), programID );
++failCount;
if (failCount >= 1000) {
std::cout << "Loading fragmentShader failed!" << std::endl;
failCount = 0;
break;
}
}
// create VAO
glGenVertexArrays(1, &VAO);
// link OpenGL program
glLinkProgram(programID);
//Initialize clear color
glClearColor(0.0, 0.0, 0.0, 1.0f);
return success;
}
示例2: keyboard
// called on keyboard input
void keyboard(unsigned char key, int x_pos, int y_pos )
{
ShaderLoader programLoad;
// Handle keyboard input - end program
if((key == 27)||(key == 'q')||(key == 'Q'))
{
glutLeaveMainLoop();
}
else if((key == 'w')||(key == 'W'))
{
forward = true;
}
else if((key == 'a')||(key == 'A'))
{
goLeft = true;
}
else if((key == 's')||(key == 'S'))
{
backward = true;
}
else if((key == 'd')||(key == 'D'))
{
goRight = true;
}
else if(key == '1')
{
programLoad.loadShader( vsFileName, fsFileName1, program );
viewType = 1;
}
else if(key == '2')
{
programLoad.loadShader( vsFileName, fsFileName2, program );
viewType = 2;
}
else if(key == '3')
{
programLoad.loadShader( vsFileName, fsFileName3, program );
viewType = 3;
}
else if(key == '4')
{
programLoad.loadShader( vsFileName, fsFileName4, program );
viewType = 4;
}
}
示例3: initialize
bool initialize()
{
// Initialize basic geometry and shaders for this example
//this defines a cube, this is why a model loader is nice
//you can also do this with a draw elements and indices, try to get that working
Vertex geometry[] = { {{-1.0, -1.0, -1.0}, {0.0, 0.0, 0.0}},
{{-1.0, -1.0, 1.0}, {0.0, 0.0, 1.0}},
{{-1.0, 1.0, 1.0}, {0.0, 1.0, 1.0}},
{{1.0, 1.0, -1.0}, {1.0, 1.0, 0.0}},
{{-1.0, -1.0, -1.0}, {0.0, 0.0, 0.0}},
{{-1.0, 1.0, -1.0}, {0.0, 1.0, 0.0}},
{{1.0, -1.0, 1.0}, {1.0, 0.0, 1.0}},
{{-1.0, -1.0, -1.0}, {0.0, 0.0, 0.0}},
{{1.0, -1.0, -1.0}, {1.0, 0.0, 0.0}},
{{1.0, 1.0, -1.0}, {1.0, 1.0, 0.0}},
{{1.0, -1.0, -1.0}, {1.0, 0.0, 0.0}},
{{-1.0, -1.0, -1.0}, {0.0, 0.0, 0.0}},
{{-1.0, -1.0, -1.0}, {0.0, 0.0, 0.0}},
{{-1.0, 1.0, 1.0}, {0.0, 1.0, 1.0}},
{{-1.0, 1.0, -1.0}, {0.0, 1.0, 0.0}},
{{1.0, -1.0, 1.0}, {1.0, 0.0, 1.0}},
{{-1.0, -1.0, 1.0}, {0.0, 0.0, 1.0}},
{{-1.0, -1.0, -1.0}, {0.0, 0.0, 0.0}},
{{-1.0, 1.0, 1.0}, {0.0, 1.0, 1.0}},
{{-1.0, -1.0, 1.0}, {0.0, 0.0, 1.0}},
{{1.0, -1.0, 1.0}, {1.0, 0.0, 1.0}},
{{1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}},
{{1.0, -1.0, -1.0}, {1.0, 0.0, 0.0}},
{{1.0, 1.0, -1.0}, {1.0, 1.0, 0.0}},
{{1.0, -1.0, -1.0}, {1.0, 0.0, 0.0}},
{{1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}},
{{1.0, -1.0, 1.0}, {1.0, 0.0, 1.0}},
{{1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}},
{{1.0, 1.0, -1.0}, {1.0, 1.0, 0.0}},
{{-1.0, 1.0, -1.0}, {0.0, 1.0, 0.0}},
{{1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}},
{{-1.0, 1.0, -1.0}, {0.0, 1.0, 0.0}},
{{-1.0, 1.0, 1.0}, {0.0, 1.0, 1.0}},
{{1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}},
{{-1.0, 1.0, 1.0}, {0.0, 1.0, 1.0}},
{{1.0, -1.0, 1.0}, {1.0, 0.0, 1.0}}
};
// create a Vertex Buffer object to store this vertex info on the GPU
glGenBuffers(1, &vbo_geometry);
glBindBuffer(GL_ARRAY_BUFFER, vbo_geometry);
glBufferData(GL_ARRAY_BUFFER, sizeof(geometry), geometry, GL_STATIC_DRAW);
// loads shaders to program
programLoad.loadShader( vsFileName, fsFileName, program );
// now we set the locations of the attributes and uniforms
// this allows us to access them easily while rendering
loc_position = glGetAttribLocation(program,
const_cast<const char*>("v_position"));
if(loc_position == -1)
{
std::cerr << "[F] POSITION NOT FOUND" << std::endl;
return false;
}
loc_color = glGetAttribLocation(program,
const_cast<const char*>("v_color"));
if(loc_color == -1)
{
std::cerr << "[F] V_COLOR NOT FOUND" << std::endl;
return false;
}
loc_mvpmat = glGetUniformLocation(program,
const_cast<const char*>("mvpMatrix"));
if(loc_mvpmat == -1)
{
std::cerr << "[F] MVPMATRIX NOT FOUND" << std::endl;
return false;
}
//--Init the view and projection matrices
// if you will be having a moving camera the view matrix will need to more dynamic
// ...Like you should update it before you render more dynamic
// for this project having them static will be fine
view = glm::lookAt( glm::vec3(0.0, 8.0, -16.0), //Eye Position
glm::vec3(0.0, 0.0, 0.0), //Focus point
glm::vec3(0.0, 1.0, 0.0)); //Positive Y is up
projection = glm::perspective( 45.0f, //the FoV typically 90 degrees is good which is what this is set to
float(w)/float(h), //Aspect Ratio, so Circles stay Circular
0.01f, //Distance to the near plane, normally a small value like this
100.0f); //Distance to the far plane,
//.........这里部分代码省略.........
示例4: initialize
// initialize basic geometry and shaders for this example
bool initialize( const char* filename)
{
// define model with model loader
/*bool geometryLoadedCorrectly;
Mesh object;
ShaderLoader programLoad;*/
int index;
std::vector<Mesh> meshes;
ShaderLoader programLoad;
// load the image info
if( !loadInfo( filename, meshes, numImages ) )
{
return false;
}
// loop through each planet
for( index = 0; index < numImages; index++ )
{
// Create a Vertex Buffer object to store this vertex info on the GPU
glGenBuffers(1, &(images[index].vbo_geometry));
glBindBuffer(GL_ARRAY_BUFFER, images[index].vbo_geometry);
glBufferData(GL_ARRAY_BUFFER, meshes[index].geometry.size()* sizeof(Vertex), &(meshes[index].geometry[0]), GL_STATIC_DRAW);
// Create Texture object
glGenTextures(1, &(images[index].texture));
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, images[index].texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, images[index].imageCols, images[index].imageRows, 0, GL_RGBA, GL_UNSIGNED_BYTE, images[index].m_blob.data());
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glGenBuffers(1, &(images[index].normalbuffer));
glBindBuffer(GL_ARRAY_BUFFER, images[index].normalbuffer);
glBufferData(GL_ARRAY_BUFFER, meshes[index].geometry.size() * sizeof(Vertex), &(meshes[index].geometry[0]), GL_STATIC_DRAW);
//glBufferData(GL_ARRAY_BUFFER, meshes[index].geometry.size() * sizeof(Vertex), &(meshes[index].geometry[offsetof(Vertex,normals)]), GL_STATIC_DRAW);
}
//if( viewType == 0 )
//{
// loads shaders to program
programLoad.loadShader( vsFileName, fsFileName1, program );
//}
/*
else
{
// loads shaders to program
programLoad.loadShader( vsFileName, fsFileName1, program );
}
*/
// Get a handle for our "MVP" uniform
loc_mvpmat = glGetUniformLocation(program, "mvpMatrix");
if(loc_mvpmat == -1)
{
std::cerr << "[F] MVP MATRIX NOT FOUND" << std::endl;
return false;
}
viewMatrixID = glGetUniformLocation(program, "V");
if(viewMatrixID == -1)
{
std::cerr << "[F] VIEW NOT FOUND" << std::endl;
return false;
}
modelMatrixID = glGetUniformLocation(program, "M");
if(modelMatrixID == -1)
{
std::cerr << "[F] MODEL NOT FOUND" << std::endl;
return false;
}
/*
// Get a handle for our buffers
loc_position = glGetAttribLocation(program, "v_position");
if(loc_position == -1)
{
std::cerr << "[F] POSITION NOT FOUND" << std::endl;
return false;
}
loc_texture = glGetAttribLocation(program, "v_color");
if(loc_texture == -1)
{
std::cerr << "[F] COLOR NOT FOUND" << std::endl;
return false;
}
*/
// Get a handle for our buffers
loc_position = glGetAttribLocation(program, "v_position");
if(loc_position == -1)
{
std::cerr << "[F] POSITION NOT FOUND" << std::endl;
return false;
}
loc_texture = glGetAttribLocation(program, "v_color");
//.........这里部分代码省略.........