本文整理汇总了C++中compileShader函数的典型用法代码示例。如果您正苦于以下问题:C++ compileShader函数的具体用法?C++ compileShader怎么用?C++ compileShader使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了compileShader函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: glCreateShader
GLuint Shaders::loadShaderFromString(const std::string& vertexSourceCode, const std::string& fragmentSourceCode)
{
// Create the shaders
GLuint vertexShaderID = glCreateShader(GL_VERTEX_SHADER);
GLuint fragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
GLint result = GL_FALSE;
int infoLogLength;
compileShader(vertexShaderID, vertexSourceCode, &result, &infoLogLength);
compileShader(fragmentShaderID, fragmentSourceCode, &result, &infoLogLength);
// Link the program
GLuint programID = glCreateProgram();
glAttachShader(programID, vertexShaderID);
glAttachShader(programID, fragmentShaderID);
glLinkProgram(programID);
// Check the program
glGetProgramiv(programID, GL_LINK_STATUS, &result);
glGetProgramiv(programID, GL_INFO_LOG_LENGTH, &infoLogLength);
if ( infoLogLength > 0 ){
std::vector<char> programErrorMessage(infoLogLength+1);
glGetProgramInfoLog(programID, infoLogLength, NULL, &programErrorMessage[0]);
printf("%s\n", &programErrorMessage[0]);
}
glDeleteShader(vertexShaderID);
glDeleteShader(fragmentShaderID);
return programID;
}
开发者ID:sakydpozrux,项目名称:PGK,代码行数:32,代码来源:shaders.cpp
示例2: memset
bool Shader::LoadAndCompile(const std::string& sVert, const std::string& sFrag)
{
GLhandleARB so[2];
memset(so, 0, sizeof(GLhandleARB)*2);
///Loading the shader
so[0] = loadShader(sVert.c_str());
if(so[0]==0){
std::cerr << "loading shader "+sVert+" failed" << std::endl;
return false;
}
///Compiling the shader, done by the graphic card
if(!compileShader(so[0])){
std::cerr << "compiling shader "+sVert+" failed" << std::endl;
return false;
}
so[1] = loadShader(sFrag.c_str());
if(so[1]==0){
std::cerr << "loading shader "+sFrag+" failed " << std::endl;
return false;
}
if(!compileShader(so[1])){
std::cerr << "compiling shader "+sFrag+" failed " << std::endl;
return false;
}
m_oProgram = linkShaders(so,2);
m_bIsReady = true;
return true;
}
开发者ID:Kambius,项目名称:burger-engine,代码行数:32,代码来源:Shader.cpp
示例3: compileShaders
static GLboolean compileShaders(const GLchar* vertexShaderSource, const GLchar* fragmentShaderSource, GLuint* shaderVertexObjectId, GLuint* shaderFragmentObjectId, GLuint* programObjectId) {
if(!compileShader(&vertexShaderSource[0], NULL, GL_VERTEX_SHADER, shaderVertexObjectId)) {
// Undo compilation
}
if(!compileShader(&fragmentShaderSource[0], NULL, GL_FRAGMENT_SHADER, shaderFragmentObjectId)){
// Undo compilation
return GL_FALSE;
}
*programObjectId = glCreateProgram();
glAttachShader(*programObjectId, *shaderVertexObjectId);
glAttachShader(*programObjectId, *shaderFragmentObjectId);
glLinkProgram(*programObjectId);
GLint linkSuccess = GL_FALSE;
glGetProgramiv(*programObjectId, GL_LINK_STATUS, &linkSuccess);
if (linkSuccess == GL_FALSE) {
GLchar messages[256] = {0};
glGetProgramInfoLog(*programObjectId, sizeof(messages), 0, &messages[0]);
printf("Prgram compilation failed: %s", messages);
// Undo compilation
return GL_FALSE;
}
return GL_TRUE;
}
开发者ID:davidandreoletti,项目名称:libegl,代码行数:26,代码来源:Sample1Test.c
示例4: glCreateProgram
bool GLSLProgram::compileShaders(const std::string& vertexShaderFilePath, const std::string& fragmentShaderFilePath)
{
//Create the program to bind shader in
_programID = glCreateProgram();
//Create shader programs:
_vertexShaderID = glCreateShader(GL_VERTEX_SHADER);
if (_vertexShaderID == 0)
{
fatalError("Vertex shader failed to be created");
return false;
}
_fragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
if (_fragmentShaderID == 0)
{
fatalError("Fragment shader failed to be created");
return false;
}
//open, read and compile each program
//compile vertex shader
if (!compileShader(vertexShaderFilePath, _vertexShaderID))
{
return false;
}
//compile fragment shader
if (!compileShader(fragmentShaderFilePath, _fragmentShaderID))
{
return false;
}
return true;
}
开发者ID:juaxix,项目名称:cpp_gamedev,代码行数:32,代码来源:GLSLProgram.cpp
示例5: linkProgram
//------------------------------------------------------------------------------
GLuint linkProgram(const char *define) {
GLuint vertexShader = compileShader(GL_VERTEX_SHADER,
"VERTEX_SHADER", define);
GLuint geometryShader = compileShader(GL_GEOMETRY_SHADER,
"GEOMETRY_SHADER", define);
GLuint fragmentShader = compileShader(GL_FRAGMENT_SHADER,
"FRAGMENT_SHADER", define);
GLuint program = glCreateProgram();
glAttachShader(program, vertexShader);
glAttachShader(program, geometryShader);
glAttachShader(program, fragmentShader);
glBindAttribLocation(program, 0, "position");
glBindAttribLocation(program, 1, "normal");
glLinkProgram(program);
glDeleteShader(vertexShader);
glDeleteShader(geometryShader);
glDeleteShader(fragmentShader);
GLint status;
glGetProgramiv(program, GL_LINK_STATUS, &status );
if( status == GL_FALSE ) {
GLchar emsg[1024];
glGetProgramInfoLog(program, sizeof(emsg), 0, emsg);
fprintf(stderr, "Error linking GLSL program : %s\n", emsg );
exit(0);
}
return program;
}
开发者ID:mbdriscoll,项目名称:OpenSubdiv,代码行数:35,代码来源:viewer.cpp
示例6: glCreateProgram
void GLSLProgram::compileShaders(const std::string& vertexShaderFilePath, const std::string& fragmentShaderFilePath)
{
//Vertex and fragment shaders are successfully compiled.
//Now time to link them together into a program.
//Get a program object.
programID = glCreateProgram();
vertexShaderID = glCreateShader(GL_VERTEX_SHADER);
if (vertexShaderID == 0)
{
std::printf("ERROR : could not create Vertex shader");
}
fragShaderID = glCreateShader(GL_FRAGMENT_SHADER);
if (fragShaderID == 0)
{
std::printf("ERROR : could not create Fragment shader");
}
compileShader(vertexShaderFilePath, vertexShaderID);
compileShader(fragmentShaderFilePath, fragShaderID);
}
开发者ID:ckosidow,项目名称:CPPGame,代码行数:28,代码来源:GLSLProgram.cpp
示例7: compileShader
void GpuProgram::create(const char* vs, const char* fs) {
GLuint vertexID = compileShader(vs, GL_VERTEX_SHADER);
GLuint fragmentID = compileShader(fs, GL_FRAGMENT_SHADER);
name_ = glCreateProgram();
OGLERROR;
glAttachShader(name_, vertexID);
OGLERROR;
glAttachShader(name_, fragmentID);
OGLERROR;
glLinkProgram(name_);
OGLERROR;
#ifdef _DEBUG
glGetProgramiv(name_, GL_LINK_STATUS, &success_);
OGLERROR;
if (!success_) {
glGetProgramInfoLog(name_, 512, nullptr, logProgram_);
OGLERROR;
printf("%s", logProgram_);
}
#endif
glDeleteShader(vertexID);
OGLERROR;
glDeleteShader(fragmentID);
OGLERROR;
}
开发者ID:robinfaury,项目名称:engine,代码行数:28,代码来源:gpuprogram.cpp
示例8: buildProgram
GLProgram buildProgram(VSrc&& vsrc, GSrc&& gsrc, FSrc&& fsrc) {
GLShader vs = compileShader(GL_VERTEX_SHADER, std::forward<VSrc>(vsrc));
GLShader gs = compileShader(GL_GEOMETRY_SHADER, std::forward<GSrc>(gsrc));
GLShader fs = compileShader(GL_FRAGMENT_SHADER, std::forward<FSrc>(fsrc));
return buildProgram({ std::move(vs), std::move(gs), std::move(fs) });
}
开发者ID:Celeborn2BeAlive,项目名称:c2ba-glutils,代码行数:7,代码来源:GLProgram.hpp
示例9: loadShaders
void loadShaders(GLuint *_positionSlot, GLuint *_colorSlot) {
GLuint vertex = compileShader(GL_VERTEX_SHADER, VERTEX_SHADER_CODE);
GLuint fragment = compileShader(GL_FRAGMENT_SHADER, FRAGMENT_SHADER_CODE);
GLuint program = glCreateProgram();
glAttachShader(program, vertex);
glAttachShader(program, fragment);
glLinkProgram(program);
GLint linkSuccess;
glGetShaderiv(program, GL_COMPILE_STATUS, &linkSuccess);
if (linkSuccess == GL_FALSE) {
GLchar messages[256];
glGetProgramInfoLog(program, sizeof(messages), NULL, &messages[0]);
printf("Program linking error: %s\n", messages);
exit(1);
}
glUseProgram(program);
*_positionSlot = glGetAttribLocation(program, "Position");
*_colorSlot = glGetAttribLocation(program, "SourceColor");
glEnableVertexAttribArray(*_positionSlot);
glEnableVertexAttribArray(*_colorSlot);
return;
}
开发者ID:fasterthanlime,项目名称:hello-sdl2-ios6,代码行数:27,代码来源:shaders.c
示例10: init
void init(Data*data){
data->cameraTransform = std::make_shared<OrbitCamera>();
data->cameraProjection = std::make_shared<PerspectiveCamera>(
glm::half_pi<float>(),
(float)data->window.width/data->window.height);
data->program = createProgram(
compileShader(GL_VERTEX_SHADER ,loadFile("shaders/orbitManipulator.vp")),
compileShader(GL_FRAGMENT_SHADER,loadFile("shaders/orbitManipulator.fp")));
data->mvpUniform = glGetUniformLocation(data->program,"mvp");
glGenBuffers(1,&data->vbo);
glBindBuffer(GL_ARRAY_BUFFER,data->vbo);
float vertices[]={0,0,0,1, 1,0,0,1, 0,1,0,1};
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices),vertices,GL_STATIC_DRAW);
glGenVertexArrays(1,&data->vao);
glBindVertexArray(data->vao);
glBindBuffer(GL_ARRAY_BUFFER,data->vbo);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0,4,GL_FLOAT,GL_FALSE,sizeof(float)*4,0);
glBindVertexArray(0);
glClearColor(0,0,0,1);
glDisable(GL_CULL_FACE);
}
开发者ID:dormon,项目名称:fit_opengl_examples,代码行数:30,代码来源:orbitManipulator.cpp
示例11: showShaderInfoLog
GLuint ShaderManager::buildProgram(const Shader& vshaderInstance, const Shader& fhaderInstance, const Shader& ghaderInstance)
{
if (!compileShader(vshaderInstance))
{
showShaderInfoLog(vshaderInstance);
}
if (!compileShader(fhaderInstance))
{
showShaderInfoLog(fhaderInstance);
}
if (!compileShader(ghaderInstance))
{
showShaderInfoLog(ghaderInstance);
}
GLuint program = glCreateProgram();
glAttachShader(program, vshaderInstance.getID());
glAttachShader(program, fhaderInstance.getID());
glLinkProgram(program);
GLint linked;
glGetProgramiv(program, GL_LINK_STATUS, &linked);
if (!linked)
{
showProgramInfoLog(program);
}
glDeleteShader(vshaderInstance.getID());
glDeleteShader(fhaderInstance.getID());
return program;
}
开发者ID:ampawd,项目名称:opengl-demo,代码行数:32,代码来源:shader_manager.cpp
示例12: LoadShaders
GLuint LoadShaders(const char *vertFile,const char * fragFile)
{
GLuint vShaderID = glCreateShader(GL_VERTEX_SHADER);
GLuint fShaderID = glCreateShader(GL_FRAGMENT_SHADER);
char * vShaderSource = readFile(vertFile);
char * fShaderSource = readFile(fragFile);
compileShader(vShaderID, vShaderSource);
compileShader(fShaderID, fShaderSource);
GLuint programID = glCreateProgram();
glAttachShader(programID, vShaderID);
glAttachShader(programID, fShaderID);
glLinkProgram(programID);
GLint result;
int infoLogLength;
glGetProgramiv(programID, GL_LINK_STATUS, &result);
if (result != GL_TRUE)
{
glGetProgramiv(programID, GL_INFO_LOG_LENGTH, &infoLogLength);
char *buf = (char *)malloc(infoLogLength+1);
glGetProgramInfoLog(programID, infoLogLength, NULL, buf);
fprintf(stderr,"%s\n", buf);
free(buf);
}
glDeleteShader(vShaderID);
glDeleteShader(fShaderID);
return programID;
}
开发者ID:davepape,项目名称:beadgame,代码行数:27,代码来源:main.cpp
示例13: glCreateProgram
void Shader::load() {
Renderer *renderer = Naquadah::getRenderer();
if (renderer != nullptr) {
std::string vertexCode = FileIO::mergeLines(FileIO::readTextFile(vertexFilename));
std::string fragmentCode = FileIO::mergeLines(FileIO::readTextFile(fragmentFilename));
std::string geometryCode = FileIO::mergeLines(FileIO::readTextFile(geometryFilename));
std::string tessCtrlCode = FileIO::mergeLines(FileIO::readTextFile(tessCtrlFilename));
std::string tessEvalCode = FileIO::mergeLines(FileIO::readTextFile(tessEvalFilename));
this->program = glCreateProgram();
vertexId = compileShader(program, GL_VERTEX_SHADER, vertexCode.c_str());
fragmentId = compileShader(program, GL_FRAGMENT_SHADER, fragmentCode.c_str());
if (geometryCode.size() > 0)
geometryId = compileShader(program, GL_GEOMETRY_SHADER, geometryCode.c_str());
if (tessCtrlCode.size() > 0 && tessEvalCode.size() > 0) {
tessCtrlId = compileShader(program, GL_TESS_CONTROL_SHADER, tessCtrlCode.c_str());
tessEvalId = compileShader(program, GL_TESS_EVALUATION_SHADER, tessEvalCode.c_str());
}
setDefaultAttributes();
if (linkProgram(program))
valid = true;
} else
valid = false;
loaded = true;
}
开发者ID:roooodcastro,项目名称:city-rendering-engine,代码行数:25,代码来源:Shader.cpp
示例14: compileShader
GLuint shaderhelper::createProgram(const std::string & vertexFilename, const std::string & fragmentFilename)
{
GLuint vertexShaderId = compileShader(vertexFilename, GL_VERTEX_SHADER);
GLuint fragmentShaderId = compileShader(fragmentFilename, GL_FRAGMENT_SHADER);
GLuint programId = glCreateProgram();
glAttachShader(programId, vertexShaderId);
glAttachShader(programId, fragmentShaderId);
glLinkProgram(programId);
GLint compilationSuccess = GL_FALSE;
int infoLogLength;
glGetProgramiv(programId, GL_LINK_STATUS, &compilationSuccess);
glGetProgramiv(programId, GL_INFO_LOG_LENGTH, &infoLogLength);
if (infoLogLength > 0) {
std::vector<char> programErrorMessage((unsigned long) (infoLogLength + 1));
glGetProgramInfoLog(programId, infoLogLength, nullptr, &programErrorMessage[0]);
throw std::runtime_error(&programErrorMessage[0]);
}
glDeleteShader(vertexShaderId);
glDeleteShader(fragmentShaderId);
return programId;
}
开发者ID:andystanton,项目名称:glfw-skeleton,代码行数:26,代码来源:shaderhelper.cpp
示例15: glCreateShader
GLuint ShaderProgram::loadShaders(const char * vertex_file_path, const char * fragment_file_path ) {
// Create the shaders
GLuint VertexShaderID = glCreateShader(GL_VERTEX_SHADER);
GLuint FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
// Compile both shaders. Exit if compile errors.
if ( !compileShader(vertex_file_path, VertexShaderID)
|| !compileShader(fragment_file_path, FragmentShaderID) ) {
return 0;
}
// Link the program
GLuint ProgramID = glCreateProgram();
glAttachShader(ProgramID, VertexShaderID);
glAttachShader(ProgramID, FragmentShaderID);
glLinkProgram(ProgramID);
// Check the program
GLint Result = GL_FALSE;
int InfoLogLength;
glGetProgramiv(ProgramID, GL_LINK_STATUS, &Result);
glGetProgramiv(ProgramID, GL_INFO_LOG_LENGTH, &InfoLogLength);
if ( InfoLogLength > 0 ) {
std::vector<char> ProgramErrorMessage(InfoLogLength+1);
glGetProgramInfoLog(ProgramID, InfoLogLength, NULL, &ProgramErrorMessage[0]);
std::cerr << &ProgramErrorMessage[0] << std::endl;
}
glDeleteShader(VertexShaderID);
glDeleteShader(FragmentShaderID);
return ProgramID;
}
开发者ID:jackgerrits,项目名称:opengl-car-game,代码行数:34,代码来源:ShaderProgram.cpp
示例16: buildProgram
GLuint buildProgram(const char *vert_shader_source, const char *frag_shader_source)
{
/* compile the vertex shader */
GLuint vert_shader = compileShader(GL_VERTEX_SHADER, vert_shader_source);
if (vert_shader == 0)
{
return 0;
}
/* compile the fragment shader */
GLuint frag_shader = compileShader(GL_FRAGMENT_SHADER, frag_shader_source);
if (frag_shader == 0)
{
glDeleteShader(vert_shader);
return 0;
}
/* link the shaders together */
GLuint program = linkProgram(2, vert_shader, frag_shader);
/* delete shader objects, so that when user destroys the program object,
the shaders will be freed too */
glDeleteShader(frag_shader);
glDeleteShader(vert_shader);
return program;
}
开发者ID:jcxz,项目名称:GMU,代码行数:27,代码来源:ogl_lib.cpp
示例17: linkDebugProgram
void linkDebugProgram() {
if (g_debugProgram)
glDeleteProgram(g_debugProgram);
GLuint vertexShader = compileShader(GL_VERTEX_SHADER,
"PTEX_DEBUG_VERTEX_SHADER");
GLuint fragmentShader = compileShader(GL_FRAGMENT_SHADER,
"PTEX_DEBUG_FRAGMENT_SHADER");
g_debugProgram = glCreateProgram();
glAttachShader(g_debugProgram, vertexShader);
glAttachShader(g_debugProgram, fragmentShader);
glLinkProgram(g_debugProgram);
glDeleteShader(fragmentShader);
GLint status;
glGetProgramiv(g_debugProgram, GL_LINK_STATUS, &status );
if( status == GL_FALSE ) {
GLchar emsg[1024];
glGetProgramInfoLog(g_debugProgram, sizeof(emsg), 0, emsg);
fprintf(stderr, "Error linking GLSL program : %s\n", emsg );
exit(0);
}
GLint texData = glGetUniformLocation(g_debugProgram, "ptexDebugData");
glProgramUniform1i(g_debugProgram, texData, 0);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D_ARRAY, g_osdPTexImage->GetTexelsTexture());
}
开发者ID:mbdriscoll,项目名称:OpenSubdiv,代码行数:30,代码来源:viewer.cpp
示例18: init
void init(Data*data){
if(data->args.size()<2){
std::cerr<<"expected name of video"<<std::endl;
std::exit(0);
}
data->video = std::make_shared<Video>(data->args[1]);
data->window->setSize(data->video->getWidth(),data->video->getHeight());
glEnable(GL_DEBUG_OUTPUT);
glDebugMessageCallback((GLDEBUGPROC)defaultDebugMessage,NULL);
glViewport(0,0,data->video->getWidth(),data->video->getHeight());
data->frame = std::make_shared<TextureObject>();
data->program = std::make_shared<ProgramObject>(createProgram(
compileShader(GL_VERTEX_SHADER ,
"#version 450\n",
loadFile("shaders/video_gray.vp")),
compileShader(GL_FRAGMENT_SHADER,
"#version 450\n",
loadFile("shaders/noiseFunctions.vp"),
loadFile("shaders/gradients.vp"),
loadFile("shaders/video_gray.fp"))));
glGenVertexArrays(1,&data->vao);
glClearColor(0,0,0,1);
}
开发者ID:dormon,项目名称:fit_opengl_examples,代码行数:31,代码来源:video_gray.cpp
示例19: glGetBooleanv
bool GLProgram::initWithByteArrays(const GLchar* vShaderByteArray, const GLchar* fShaderByteArray)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
GLboolean hasCompiler = false;
glGetBooleanv(GL_SHADER_COMPILER, &hasCompiler);
_hasShaderCompiler = (hasCompiler == GL_TRUE);
if(!_hasShaderCompiler)
{
return initWithPrecompiledProgramByteArray(vShaderByteArray,fShaderByteArray);
}
#endif
_program = glCreateProgram();
CHECK_GL_ERROR_DEBUG();
_vertShader = _fragShader = 0;
if (vShaderByteArray)
{
if (!compileShader(&_vertShader, GL_VERTEX_SHADER, vShaderByteArray))
{
CCLOG("cocos2d: ERROR: Failed to compile vertex shader");
return false;
}
}
// Create and compile fragment shader
if (fShaderByteArray)
{
if (!compileShader(&_fragShader, GL_FRAGMENT_SHADER, fShaderByteArray))
{
CCLOG("cocos2d: ERROR: Failed to compile fragment shader");
return false;
}
}
if (_vertShader)
{
glAttachShader(_program, _vertShader);
}
CHECK_GL_ERROR_DEBUG();
if (_fragShader)
{
glAttachShader(_program, _fragShader);
}
_hashForUniforms.clear();
CHECK_GL_ERROR_DEBUG();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || defined(WP8_SHADER_COMPILER)
_shaderId = CCPrecompiledShaders::getInstance()->addShaders(vShaderByteArray, fShaderByteArray);
#endif
return true;
}
开发者ID:980538137,项目名称:MyGame-QuickCocos2dx,代码行数:59,代码来源:CCGLProgram.cpp
示例20: sprintf
Renderer::Renderer(const char *rootDirectory) {
char file[200];
// create color program
string src;
sprintf(file, "%s/shader/color.vertexshader", rootDirectory);
loadShaderCodeFromFile(file, src);
compileShader(src, GL_VERTEX_SHADER, shader["color_vertex"]);
sprintf(file, "%s/shader/color.fragmentshader", rootDirectory);
loadShaderCodeFromFile(file, src);
compileShader(src, GL_FRAGMENT_SHADER, shader["color_fragment"]);
if (createRenderProgram(shader["color_vertex"], shader["color_fragment"], program["color"]) == GL_FALSE)
return;
MatrixID = glGetUniformLocation(program["color"], "MVP");
ViewMatrixID = glGetUniformLocation(program["color"], "ViewMatrix");
ModelMatrixID= glGetUniformLocation(program["color"], "ModelMatrix");
LightPositionID = glGetUniformLocation(program["color"], "LightPosition_worldspace");
Mat cameraMatrix, distCoeffs;
sprintf(file, "%s/intrinsics.xml", rootDirectory);
cv::FileStorage fs(file, cv::FileStorage::READ);
fs["camera_matrix"] >> cameraMatrix;
fs["distortion_coefficients"] >> distCoeffs;
fs.release();
// calculate undistortion mapping
Mat img_rectified, map1, map2;
initUndistortRectifyMap(cameraMatrix, distCoeffs, Mat(),
getOptimalNewCameraMatrix(cameraMatrix, distCoeffs, cv::Size(WIDTH, HEIGHT), 1,
cv::Size(WIDTH, HEIGHT), 0),
cv::Size(WIDTH, HEIGHT), CV_16SC2, map1, map2);
ViewMatrix = Matrix4f::Identity();
ViewMatrix.topRightCorner(3,1) << 0,0,-2;
float n = 0.01; // near field
float f = 100; // far field
ProjectionMatrix << cameraMatrix.at<double>(0, 0) / cameraMatrix.at<double>(0, 2), 0.0, 0.0, 0.0,
0.0, cameraMatrix.at<double>(1, 1) / cameraMatrix.at<double>(1, 2), 0.0, 0.0,
0.0, 0.0, -(f + n) / (f - n), (-2.0f * f * n) / (f - n),
0.0, 0.0, -1.0, 0.0;
K << cameraMatrix.at<double>(0, 0), cameraMatrix.at<double>(0, 1), cameraMatrix.at<double>(0, 2),
cameraMatrix.at<double>(1, 0), cameraMatrix.at<double>(1, 1), cameraMatrix.at<double>(1, 2),
cameraMatrix.at<double>(2, 0), cameraMatrix.at<double>(2, 1), cameraMatrix.at<double>(2, 2);
cout << "K\n" << K << endl;
Kinv = K.inverse();
// background ccolor
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
// Enable depth test
glEnable(GL_DEPTH_TEST);
// Accept fragment if it closer to the camera than the former one
glDepthFunc(GL_LESS);
// Cull triangles which normal is not towards the camera
glEnable(GL_CULL_FACE);
}
开发者ID:Roboy,项目名称:omgl,代码行数:58,代码来源:renderer.cpp
注:本文中的compileShader函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论