• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ compile_shader函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中compile_shader函数的典型用法代码示例。如果您正苦于以下问题:C++ compile_shader函数的具体用法?C++ compile_shader怎么用?C++ compile_shader使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了compile_shader函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: create_simple_program

static GLuint create_simple_program(const GLchar * vsource, int vsource_size, const GLchar *fsource, int fsource_size ) {


	GLuint program = 0;
	GLuint vshader = 0;
	GLuint fshader = 0;
	GLint  linkedparam = GL_FALSE;

	program = glCreateProgram();
	vshader = compile_shader( GL_VERTEX_SHADER,   vsource, vsource_size );
	fshader = compile_shader( GL_FRAGMENT_SHADER, fsource, fsource_size );

	if(program && vshader && fshader)
		linkedparam = link_program( program, vshader, fshader);

	if( vshader )
		glDeleteShader( vshader );
	if( fshader )
		glDeleteShader( fshader );

	if(program && (linkedparam != GL_TRUE))
		glDeleteProgram(program);

	if (linkedparam != GL_TRUE)
		program = 0;

	return program;
}
开发者ID:chris-stones,项目名称:rh_texture_pack,代码行数:28,代码来源:test.c


示例2: glCreateShader

GLuint gl_context::add_shader(std::string const& vertex_file_path,
      std::string const& fragment_file_path) const {
   GLuint vertex_id = glCreateShader(GL_VERTEX_SHADER);
   GLuint fragment_id = glCreateShader(GL_FRAGMENT_SHADER);

   compile_shader(vertex_file_path, vertex_id);
   compile_shader(fragment_file_path, fragment_id);

   // Link the program
   std::cout << "Linking program" << std::endl;
   GLuint shader_id = glCreateProgram();
   glAttachShader(shader_id, vertex_id);
   glAttachShader(shader_id, fragment_id);
   glLinkProgram(shader_id);

   // Check the program
   GLint result = GL_FALSE;
   int info_log_length;
   glGetProgramiv(shader_id, GL_LINK_STATUS, &result);
   glGetProgramiv(shader_id, GL_INFO_LOG_LENGTH, &info_log_length);
   if(info_log_length > 1) {
      std::string err_message;
      err_message.resize(info_log_length);
      glGetProgramInfoLog(shader_id, info_log_length, NULL, &err_message[0]);
      std::cerr << "SHADER ERROR: " << err_message << std::endl;
   }

   glDeleteShader(vertex_id);
   glDeleteShader(fragment_id);

   return shader_id;
}
开发者ID:projedi,项目名称:graphics-hw03,代码行数:32,代码来源:gl_context.cpp


示例3: build_program

GLuint build_program(const char* src_vert, const char* src_frag)
{
	GLuint	h_vert = compile_shader(GL_VERTEX_SHADER, src_vert);
	if(!h_vert)
	{
		std::cerr << "Error while compiling the vertex shader" << std::endl;
		return 0;
	}
	GLuint	h_frag = compile_shader(GL_FRAGMENT_SHADER, src_frag);
	if(!h_frag)
	{
		std::cerr << "Error wihle compiling the fragment shader" << std::endl;
		return 0;
	}

	GLuint h_prog = glCreateProgram();
	if(!h_prog)
	{
		std::cerr << "Program object creation failed." << std::endl;
		return h_prog;
	}
	glAttachShader( h_prog, h_vert );
	glAttachShader( h_prog, h_frag );
	glLinkProgram( h_prog );
	if(!check_link_status(h_prog))	return 0;

	return h_prog;
}
开发者ID:PinkPrint,项目名称:graphics,代码行数:28,代码来源:viewer2.cpp


示例4: create_rectangle_program

// Compile rectnagle program
void create_rectangle_program(rectangle_t *state)
{
    // Compile vertex shader
    GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
    #ifdef RASPI
      compile_shader(vertexShader, "SPH/shaders/rectangle_es.vert");
    #else
      compile_shader(vertexShader, "shaders/rectangle.vert");
    #endif

    // Compile frag shader
    GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
    #ifdef RASPI
      compile_shader(fragmentShader, "SPH/shaders/rectangle_es.frag");
    #else
      compile_shader(fragmentShader, "shaders/rectangle.frag");
    #endif

    // Create shader program
    state->rectangle_program = glCreateProgram();
    glAttachShader(state->rectangle_program, vertexShader);
    glAttachShader(state->rectangle_program, fragmentShader);

    // Link and use program
    glLinkProgram(state->rectangle_program);
    show_program_log(state->rectangle_program);

    // Get rectangle location
    state->color_location = glGetUniformLocation(state->rectangle_program, "color");
    state->position_location = glGetAttribLocation(state->rectangle_program, "position");
}
开发者ID:AnthonyDiGirolamo,项目名称:SPH,代码行数:32,代码来源:rectangle_gl.c


示例5: read_shader

void Shader::LoadShader(const char* vertex_file_path,const char* fragment_file_path){
    GLuint VertexShaderID=glCreateShader(GL_VERTEX_SHADER);
    GLuint FragmentShaderID=glCreateShader(GL_FRAGMENT_SHADER);

    std::string VertexShaderCode;
    read_shader(VertexShaderCode,vertex_file_path);

    std::string FragmentShaderCode;
    read_shader(FragmentShaderCode,fragment_file_path);

    GLint Result=GL_FALSE;
    int InfoLogLength;
    // Compile Vertex Shader
    compile_shader(VertexShaderID,VertexShaderCode);
    check_shader(VertexShaderID,Result,InfoLogLength);// Check Vertex Shader
    // Compile Fragment Shader
    compile_shader(FragmentShaderID,FragmentShaderCode);
    check_shader(FragmentShaderID,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);
    check_program(ProgramID,InfoLogLength);

    glDeleteShader(VertexShaderID);
    glDeleteShader(FragmentShaderID);

    programID=ProgramID;
}
开发者ID:tim099,项目名称:CG-project-,代码行数:35,代码来源:Shader.cpp


示例6: init_shaders

void init_shaders(void)
{

   GLuint vs, fs;
   char *vs_source, *fs_source;
   GLint vs_length, fs_length;

   vs = glCreateShader(GL_VERTEX_SHADER);
   fs = glCreateShader(GL_FRAGMENT_SHADER);

   vs_source = read_file(VERTEX_SOURCE, &vs_length);
   fs_source = read_file(FRAG_SOURCE , &fs_length);

   glShaderSource(vs, 1, (const char**)&vs_source, &vs_length);
   glShaderSource(fs, 1, (const char**)&fs_source, &fs_length);

   compile_shader(vs);
   compile_shader(fs);

   prog = glCreateProgram();

   glAttachShader(prog, vs);
   glAttachShader(prog, fs);

   glLinkProgram(prog);
}
开发者ID:alzanati,项目名称:OpenGL,代码行数:26,代码来源:main.cpp


示例7: init_shaders

/* Create and compile shaders */
void init_shaders(void) {

   GLuint vs, fs, prog;
   char *vs_source, *fs_source;
   size_t vs_length, fs_length;

   vs = glCreateShader(GL_VERTEX_SHADER);
   fs = glCreateShader(GL_FRAGMENT_SHADER);   

   vs_source = read_file(VERTEX_SHADER, &vs_length);
   fs_source = read_file(FRAGMENT_SHADER, &fs_length);

   glShaderSource(vs, 1, (const char**)&vs_source, (GLint*)&vs_length);
   glShaderSource(fs, 1, (const char**)&fs_source, (GLint*)&fs_length);

   compile_shader(vs);
   compile_shader(fs);

   prog = glCreateProgram();

   glBindAttribLocation(prog, 0, "in_coords");
   glBindAttribLocation(prog, 1, "in_color");

   glAttachShader(prog, vs);
   glAttachShader(prog, fs);

   glLinkProgram(prog);
   glUseProgram(prog);
}
开发者ID:dashmoment,项目名称:opencl_in_action,代码行数:30,代码来源:texture_filter.c


示例8: create_shader_from_filename

Shader* create_shader_from_filename(const std::string& filename) {
	std::vector<ShaderStage*> shader_list;
	{
		FileData file = load_file(filename + ".vert");
		shader_list.push_back(new ShaderStage(compile_shader(GL_VERTEX_SHADER, filename.c_str(), file.data())));
	}
	{
		FileData file = load_file(filename + ".frag");
		shader_list.push_back(new ShaderStage(compile_shader(GL_FRAGMENT_SHADER, filename.c_str(), file.data())));
	}

	for(ShaderStage* s : shader_list) {
		if(s->resource == 0) {
			std::for_each(shader_list.begin(), shader_list.end(), free_shaderstage);
			return nullptr;
		}
	}

	GLuint resource = link_program(filename.c_str(), shader_list);
	std::for_each(shader_list.begin(), shader_list.end(), free_shaderstage);

	if(resource == 0) return nullptr;

	Shader* shader = new Shader();
	shader->resource = resource;

	init_shader(shader);

	return shader;
}
开发者ID:frobnicators,项目名称:derpkit,代码行数:30,代码来源:shader.cpp


示例9: load_shaders

/* Loads, compiles and activates vertex, geometry and fragment shaders */
GLuint load_shaders(const GLchar* vertex_file_path, const GLchar* fragment_file_path)
{
    std::string vertex_source = read_shader_file(vertex_file_path);
    std::string fragment_source = read_shader_file(fragment_file_path);

    GLuint vertex = compile_shader((GLchar*) vertex_source.c_str(), GL_VERTEX_SHADER, vertex_file_path);
    GLuint fragment = compile_shader((GLchar*) fragment_source.c_str(), GL_FRAGMENT_SHADER, fragment_file_path);

    GLuint program = glCreateProgram();

    glAttachShader(program, vertex);
    glAttachShader(program, fragment);

    glLinkProgram(program);

    GLint success;
    GLchar info_log[512];

    glGetProgramiv(program, GL_LINK_STATUS, &success);
    if (!success) {
        glGetProgramInfoLog(program, 512, NULL, info_log);
        Error::throw_error(Error::cant_load_shader, "Linking failed for "
                           + std::string(vertex_file_path) + ": " + std::string(info_log));
    }

    glDeleteShader(vertex);
    glDeleteShader(fragment);

    glUseProgram(program);

    return program;
}
开发者ID:lragnarsson,项目名称:Emerald-Engine,代码行数:33,代码来源:Utils.cpp


示例10: create_backround_program

void create_backround_program(background_t *state)
{
    // Compile vertex shader
    GLuint vertex_shader = glCreateShader(GL_VERTEX_SHADER);
    #ifdef RASPI
        compile_shader(vertex_shader, "SPH/shaders/background_es.vert");
    #else
        compile_shader(vertex_shader, "shaders/background.vert");
    #endif

    // Compile fragment shader
    GLuint frag_shader = glCreateShader(GL_FRAGMENT_SHADER);
    #ifdef RASPI
        compile_shader(frag_shader, "SPH/shaders/background_es.frag");
    #else
        compile_shader(frag_shader, "shaders/background.frag");
    #endif

    // Create shader program
    state->program = glCreateProgram();
    glAttachShader(state->program, vertex_shader);
    glAttachShader(state->program, frag_shader);

    // Link  program
    glLinkProgram(state->program);
    show_program_log(state->program);

    // Get position attribute location
    state->position_location = glGetAttribLocation(state->program, "position");
    // Get tex_coord location
    state->tex_coord_location = glGetAttribLocation(state->program, "tex_coord");
    // Get tex uniform location
    state->tex_location = glGetUniformLocation(state->program, "tex");
}
开发者ID:AnthonyDiGirolamo,项目名称:SPH,代码行数:34,代码来源:background_gl.c


示例11: load_shaders

static void load_shaders(void)
{
	static int done;
	GLuint s_vert;
	GLuint s_frag;
	GLint linked;

	if ( done )
		return;

	prog = glCreateProgram();

	compile_shader("shaders/md5_vert.glsl", GL_VERTEX_SHADER, &s_vert);
	compile_shader("shaders/md5_frag.glsl", GL_FRAGMENT_SHADER, &s_frag);

	glAttachShader(prog, s_vert);
	glAttachShader(prog, s_frag);

	glLinkProgram(prog);
	glGetProgramiv(prog, GL_LINK_STATUS, &linked);
	if ( !linked ) {
		GLsizei len;
		GLchar buf[512];
		glGetProgramInfoLog(prog, sizeof(buf), &len, buf);
		con_printf("shaders link error: %.*s\n", len, buf);
		exit(1);
	}

	u_Texture = glGetUniformLocationARB(prog, "Texture");
	u_normalTexture = glGetUniformLocationARB(prog, "normalTexture");

	done = 1;
}
开发者ID:giannitedesco,项目名称:blackbloc,代码行数:33,代码来源:md5_render.c


示例12: create_program_from_source

 GLuint create_program_from_source(std::string vertex_source,
     std::string frag_source)
 {
     return create_program_from_shaders(
         compile_shader(vertex_source, GL_VERTEX_SHADER),
         compile_shader(frag_source, GL_FRAGMENT_SHADER));
 }
开发者ID:ammen99,项目名称:wayfire,代码行数:7,代码来源:opengl.cpp


示例13: compile_program

static GLuint compile_program(const char *vertex, const char *fragment, unsigned i)
{
   GLuint prog = glCreateProgram();
   if (!prog)
      return 0;

   GLuint vert = 0;
   GLuint frag = 0;

   if (vertex)
   {
      RARCH_LOG("Found GLSL vertex shader.\n");
      vert = glCreateShader(GL_VERTEX_SHADER);
      if (!compile_shader(vert, "#define VERTEX\n", vertex))
      {
         RARCH_ERR("Failed to compile vertex shader #%u\n", i);
         return false;
      }

      glAttachShader(prog, vert);
   }

   if (fragment)
   {
      RARCH_LOG("Found GLSL fragment shader.\n");
      frag = glCreateShader(GL_FRAGMENT_SHADER);
      if (!compile_shader(frag, "#define FRAGMENT\n", fragment))
      {
         RARCH_ERR("Failed to compile fragment shader #%u\n", i);
         return false;
      }

      glAttachShader(prog, frag);
   }

   if (vertex || fragment)
   {
      RARCH_LOG("Linking GLSL program.\n");
      if (!link_program(prog))
      {
         RARCH_ERR("Failed to link program #%u.\n", i);
         return 0;
      }

      // Clean up dead memory. We're not going to relink the program.
      // Detaching first seems to kill some mobile drivers (according to the intertubes anyways).
      if (vert)
         glDeleteShader(vert);
      if (frag)
         glDeleteShader(frag);

      glUseProgram(prog);
      GLint location = get_uniform(prog, "Texture");
      glUniform1i(location, 0);
      glUseProgram(0);
   }

   return prog;
}
开发者ID:W-MS,项目名称:RetroArch,代码行数:59,代码来源:shader_glsl.c


示例14: build_shader

GLhandleARB build_shader(const char* vert,const char* frag) {
    GLhandleARB shadowShaderId;
    shadowShaderId = glCreateProgramObjectARB();
    glAttachObjectARB(shadowShaderId,vert?compile_shader(vert,GL_VERTEX_SHADER):0);
    glAttachObjectARB(shadowShaderId,frag?compile_shader(frag,GL_FRAGMENT_SHADER):0);
    glLinkProgramARB(shadowShaderId);
    return shadowShaderId;
}
开发者ID:yipf,项目名称:luajit-platform,代码行数:8,代码来源:interface_opengl.c


示例15: compile_programs

static bool compile_programs(GLuint *gl_prog, struct shader_program *progs, size_t num)
{
   for (unsigned i = 0; i < num; i++)
   {
      gl_prog[i] = pglCreateProgram();

      if (gl_prog[i] == 0)
      {
         RARCH_ERR("Failed to create GL program #%u.\n", i);
         return false;
      }

      if (progs[i].vertex)
      {
         RARCH_LOG("Found GLSL vertex shader.\n");
         GLuint shader = pglCreateShader(GL_VERTEX_SHADER);
         if (!compile_shader(shader, progs[i].vertex))
         {
            RARCH_ERR("Failed to compile vertex shader #%u\n", i);
            return false;
         }

         pglAttachShader(gl_prog[i], shader);
         free(progs[i].vertex);
      }

      if (progs[i].fragment)
      {
         RARCH_LOG("Found GLSL fragment shader.\n");
         GLuint shader = pglCreateShader(GL_FRAGMENT_SHADER);
         if (!compile_shader(shader, progs[i].fragment))
         {
            RARCH_ERR("Failed to compile fragment shader #%u\n", i);
            return false;
         }

         pglAttachShader(gl_prog[i], shader);
         free(progs[i].fragment);
      }

      if (progs[i].vertex || progs[i].fragment)
      {
         RARCH_LOG("Linking GLSL program.\n");
         if (!link_program(gl_prog[i]))
         {
            RARCH_ERR("Failed to link program #%u\n", i);
            return false;
         }

         GLint location = pglGetUniformLocation(gl_prog[i], "rubyTexture");
         pglUniform1i(location, 0);
         pglUseProgram(0);
      }
   }

   return true;
}
开发者ID:freakdave,项目名称:RetroArch,代码行数:57,代码来源:shader_glsl.c


示例16: compile_shader

Shader::Shader(const std::string &vertexPath, const std::string &fragmentPath) {
	GLuint vshader = compile_shader(GL_VERTEX_SHADER, read_text_file(vertexPath));
	GLuint fshader = compile_shader(GL_FRAGMENT_SHADER, read_text_file(fragmentPath));

	GLuint shader = link_shader(vshader, fshader);	

	glDeleteShader(vshader);
	glDeleteShader(fshader);
	this->program = shader;
}
开发者ID:dmarquant,项目名称:OpenGLTut,代码行数:10,代码来源:Shader.cpp


示例17: build_program

GLuint build_program(
    const GLchar * vertex_shader_source, const GLint vertex_shader_source_length,
    const GLchar * fragment_shader_source, const GLint fragment_shader_source_length) {

	GLuint vertex_shader = compile_shader(
        GL_VERTEX_SHADER, vertex_shader_source, vertex_shader_source_length);
	GLuint fragment_shader = compile_shader(
        GL_FRAGMENT_SHADER, fragment_shader_source, fragment_shader_source_length);
	return link_program(vertex_shader, fragment_shader);
}
开发者ID:mafian89,项目名称:GMU,代码行数:10,代码来源:ShadersUtils.cpp


示例18: load_shaders_text

GLuint load_shaders_text(const char *vertText, const char *fragText, const char **attributes) {
	GLuint vert_id = compile_shader(vertText, "vert text", GL_VERTEX_SHADER);
	GLuint frag_id = compile_shader(fragText, "frag text", GL_FRAGMENT_SHADER);

	GLuint program = link_program(vert_id, frag_id, attributes);

	glDeleteShader(vert_id);
	glDeleteShader(frag_id);

	return program;
}
开发者ID:carlmartus,项目名称:helloworlds,代码行数:11,代码来源:glstuff.c


示例19: create_program

/* Create program, compile shader, link program, bind attributes */
GLint create_program(const GLchar *vertSource, const GLchar *fragSource,
                     GLsizei attribNameCnt, const GLchar **attribNames,
                     const GLint *attribLocations, GLuint *program)
{
    GLuint vertShader = 0, fragShader = 0, prog = 0, i;
    GLint status;
    
    /* Create shader program */
    prog = glCreateProgram();
    *program = prog;
    
    /* Create and compile vertex shader */
    status = compile_shader(GL_VERTEX_SHADER, 1, &vertSource, &vertShader);
    if (status == 0) {
        LOG("Unable to compile vertex shader");
        return status;
    }
    
    /* Create and compile fragment shader */
    status = compile_shader(GL_FRAGMENT_SHADER, 1, &fragSource, &fragShader);
    if (status == 0) {
        LOG("Unable to compile fragment shader");
        return status;
    }
    
    /* Attach vertex shader to program */
    glAttachShader(prog, vertShader);
    
    /* Attach fragment shader to program */
    glAttachShader(prog, fragShader);
    
    /* Bind attribute locations prior to linking */
    for (i = 0; i < attribNameCnt; i++) {
        glBindAttribLocation(prog, attribLocations[i], attribNames[i]);
    }
    
    /* Link program */
    glLinkProgram(prog);
    glGetProgramiv(prog, GL_LINK_STATUS, &status);
    if (status == 0) {
        LOG("Unable to link program");
        return status;
    }
    
    /* Release vertex and fragment shaders */
    if (vertShader)
        glDeleteShader(vertShader);
    if (fragShader)
        glDeleteShader(fragShader);
    
    return status;
}
开发者ID:pol51,项目名称:python-sipsimple,代码行数:53,代码来源:opengl_dev.c


示例20: load_distort_shader

void load_distort_shader(App *app)
{
    char *vs_src = read_file(SHADER_PATH("distort.vs"));
    char *fs_src = read_file(SHADER_PATH("distort.fs"));

    GLuint shaders[2];
    shaders[0] = compile_shader(vs_src, GL_VERTEX_SHADER);
    shaders[1] = compile_shader(fs_src, GL_FRAGMENT_SHADER);
    app->program_distort = link_program(shaders, 2);

    free(vs_src);
    free(fs_src);
}
开发者ID:Baldwin-Yu,项目名称:VRDroid,代码行数:13,代码来源:loader.cpp



注:本文中的compile_shader函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ compiler函数代码示例发布时间:2022-05-30
下一篇:
C++ compileShader函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap