本文整理汇总了C++中create_shader函数的典型用法代码示例。如果您正苦于以下问题:C++ create_shader函数的具体用法?C++ create_shader怎么用?C++ create_shader使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了create_shader函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: create_program
unsigned int create_program(const char *vsdr, const char *psdr)
{
unsigned int vs, ps, prog;
int status;
if(!(vs = create_shader(GL_VERTEX_SHADER, vsdr))) {
return 0;
}
if(!(ps = create_shader(GL_FRAGMENT_SHADER, psdr))) {
glDeleteShader(vs);
return 0;
}
prog = glCreateProgram();
glAttachShader(prog, vs);
glAttachShader(prog, ps);
glLinkProgram(prog);
glGetProgramiv(prog, GL_LINK_STATUS, &status);
if(!status) {
fprintf(stderr, "failed to link shader program\n");
glDeleteProgram(prog);
prog = 0;
}
return prog;
}
开发者ID:SStalker,项目名称:Asteroids,代码行数:26,代码来源:distfield.c
示例2: setup
void setup() {
GLuint vertex_shader = create_shader("vertex.shd", GL_VERTEX_SHADER);
GLuint fragment_shader = create_shader("fragment.shd", GL_FRAGMENT_SHADER);
program = glCreateProgram();
glAttachShader(program, vertex_shader);
glAttachShader(program, fragment_shader);
glLinkProgram(program);
glDeleteShader(vertex_shader);
glDeleteShader(fragment_shader);
glGenVertexArrays(1, &vertex_array_object);
glBindVertexArray(vertex_array_object);
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexStorage2D(GL_TEXTURE_2D,
1, // Mipmap level
GL_RGBA32F,
256, 256);
std::unique_ptr<float[]> texture = createTexture();
glTexSubImage2D(GL_TEXTURE_2D,
0, // level 0
0, 0, // offset,
256, 256, // size
GL_RGBA,
GL_FLOAT,
texture.get());
texture.reset();
}
开发者ID:mlackman,项目名称:study_opengl,代码行数:33,代码来源:main.cpp
示例3: create_programme_from_files
GLuint create_programme_from_files ( const char* vert_file_name, const char* frag_file_name) {
GLuint vert, frag, programme;
assert (create_shader (vert_file_name, &vert, GL_VERTEX_SHADER));
assert (create_shader (frag_file_name, &frag, GL_FRAGMENT_SHADER));
assert (create_programme (vert, frag, &programme));
return programme;
}
开发者ID:cognoscola,项目名称:simple_level_editor,代码行数:7,代码来源:shader_loader.cpp
示例4: init_shaders
int init_shaders(void)
{
GLuint vertex_shader = create_shader("geometry_square.vs", GL_VERTEX_SHADER);
if (vertex_shader == 0)
return 0;
GLuint fragment_shader = create_shader("geometry_square.fs", GL_FRAGMENT_SHADER);
if (fragment_shader == 0)
return 0;
// Link vertex shader and fragment shader
program = glCreateProgram();
glAttachShader(program, vertex_shader);
glAttachShader(program, fragment_shader);
glLinkProgram(program);
GLint link_ok = GL_FALSE;
glGetProgramiv(program, GL_LINK_STATUS, &link_ok);
if (!link_ok)
{
fprintf(stderr, "glLinkProgram: ");
print_log(program);
}
// Bind shader variables
const char* attribute_name = "coord3d";
attribute_coord3d = glGetAttribLocation(program, attribute_name);
if (attribute_coord3d == -1)
{
fprintf(stderr, "Cound not bind attribute %s\n", attribute_name);
return 0;
}
return 1;
}
开发者ID:Clearlove1992,项目名称:GraphicsDemos,代码行数:35,代码来源:geometry_square.cpp
示例5: create_program
static GLuint create_program(const char *vsh, const char *fsh)
{
// Build shaders
GLuint vertex_shader = create_shader(vsh, GL_VERTEX_SHADER);
GLuint fragment_shader = create_shader(fsh, GL_FRAGMENT_SHADER);
// Create program
GLuint program = glCreateProgram();
// Attach shaders
glAttachShader(program, vertex_shader);
glAttachShader(program, fragment_shader);
// Link program
glLinkProgram(program);
// Check for errors
GLint status;
glGetProgramiv(program, GL_LINK_STATUS, &status);
if (status == GL_FALSE) {
GLchar messages[1024];
glGetProgramInfoLog(program, sizeof(messages), 0, &messages[0]);
fprintf(stderr, "GLSL Program Error: %s", messages);
}
// Delete shaders
glDeleteShader(vertex_shader);
glDeleteShader(fragment_shader);
return program;
}
开发者ID:LIJI32,项目名称:SameBoy,代码行数:31,代码来源:shader.c
示例6: create_gs_program
GLuint create_gs_program(const char *vertexfile, const char *geometryfile, const char *fragmentfile, GLint input, GLint output, GLint vertices) {
GLuint program = glCreateProgram();
GLuint shader;
if (vertexfile) {
shader = create_shader(vertexfile, GL_VERTEX_SHADER);
if (!shader)
return 0;
glAttachShader(program, shader);
}
if (geometryfile) {
shader = create_shader(geometryfile, GL_GEOMETRY_SHADER);
if (!shader)
return 0;
glAttachShader(program, shader);
glProgramParameteriEXT(program, GL_GEOMETRY_INPUT_TYPE_EXT, input);
glProgramParameteriEXT(program, GL_GEOMETRY_OUTPUT_TYPE_EXT, output);
glProgramParameteriEXT(program, GL_GEOMETRY_VERTICES_OUT_EXT, vertices);
}
if (fragmentfile) {
shader = create_shader(fragmentfile, GL_FRAGMENT_SHADER);
if (!shader)
return 0;
glAttachShader(program, shader);
}
glLinkProgram(program);
GLint link_ok = GL_FALSE;
glGetProgramiv(program, GL_LINK_STATUS, &link_ok);
if (!link_ok) {
fprintf(stderr, "glLinkProgram:");
print_log(program);
glDeleteProgram(program);
return 0;
}
return program;
}
开发者ID:bcosenza,项目名称:bsh,代码行数:35,代码来源:Shader_utils.cpp
示例7: fprintf
/*
Constructor for the shader. Reads two files and creates vertex shader and fragment shader as
well as links them
*/
Shader::Shader(char* vertexFile, char* fragmentFile)
{
if((VertexShader = create_shader(vertexFile, GL_VERTEX_SHADER)) == 0)
{
fprintf(stderr, "Could not create vertex shader.");
return;
}
if((FragmentShader = create_shader(fragmentFile, GL_FRAGMENT_SHADER)) == 0)
{
fprintf(stderr, "Could not create fragment shader.");
return;
}
Program = glCreateProgram();
glAttachShader(Program, VertexShader);
glAttachShader(Program, FragmentShader);
glLinkProgram(Program);
GLint linkOk = GL_FALSE;
glGetProgramiv(Program, GL_LINK_STATUS, &linkOk);
if(!linkOk)
{
fprintf(stderr, "glLinkProgram: ");
print_log(Program);
return;
}
}
开发者ID:steenstn,项目名称:SteenGraph,代码行数:31,代码来源:Shader.cpp
示例8: create_program
static void
create_program(struct nested_client *client,
const char *vert, const char *frag)
{
GLint status;
client->vert = create_shader(vert, GL_VERTEX_SHADER);
client->frag = create_shader(frag, GL_FRAGMENT_SHADER);
client->program = glCreateProgram();
glAttachShader(client->program, client->frag);
glAttachShader(client->program, client->vert);
glBindAttribLocation(client->program, POS, "pos");
glBindAttribLocation(client->program, COL, "color");
glLinkProgram(client->program);
glGetProgramiv(client->program, GL_LINK_STATUS, &status);
if (!status) {
char log[1000];
GLsizei len;
glGetProgramInfoLog(client->program, 1000, &len, log);
fprintf(stderr, "Error: linking:\n%*s\n", len, log);
exit(1);
}
client->rotation =
glGetUniformLocation(client->program, "rotation");
}
开发者ID:Igalia,项目名称:webkitgtk-wayland-proto,代码行数:28,代码来源:client.c
示例9: create_program
GLuint create_program(const char *vertexfile, const char *fragmentfile) {
GLuint program = glCreateProgram();
GLuint shader;
if(vertexfile) {
shader = create_shader(vertexfile, GL_VERTEX_SHADER);
if(!shader)
return 0;
glAttachShader(program, shader);
}
if(fragmentfile) {
shader = create_shader(fragmentfile, GL_FRAGMENT_SHADER);
if(!shader)
return 0;
glAttachShader(program, shader);
}
glLinkProgram(program);
GLint link_ok = GL_FALSE;
glGetProgramiv(program, GL_LINK_STATUS, &link_ok);
if (!link_ok) {
fprintf(stderr, "glLinkProgram:");
print_log(program);
glDeleteProgram(program);
return 0;
}
return program;
}
开发者ID:toshipiazza,项目名称:Mandelbrot-OpenGL,代码行数:30,代码来源:shader_utils.cpp
示例10: pos_
fractal_t::fractal_t()
: pos_(0.5, 0), scale_factor_(1)
{
#ifdef USE_CORE_OPENGL
TwInit(TW_OPENGL_CORE, NULL);
#else
TwInit(TW_OPENGL, NULL);
#endif
// Определение "контролов" GUI
TwBar *bar = TwNewBar("Parameters");
TwDefine(" Parameters size='300 50' color='70 100 120' valueswidth=220 iconpos=topleft");
TwAddButton(bar, "Fullscreen toggle", toggle_fullscreen_callback, NULL,
" label='Toggle fullscreen mode' key=f");
// Создание шейдеров
vs_ = create_shader(GL_VERTEX_SHADER , "shaders//fractal.glslvs");
fs_ = create_shader(GL_FRAGMENT_SHADER, "shaders//fractal.glslfs");
// Создание программы путём линковки шейдерова
program_ = create_program(vs_, fs_);
// Создание буфера с вершинными данными
init_buffer();
// Создание VAO
init_vertex_array();
}
开发者ID:Icemore,项目名称:homework,代码行数:25,代码来源:fractal.cpp
示例11: initializeGl
static void initializeGl()
{
GLuint frag, vert;
GLuint program;
GLint status;
frag = create_shader(frag_shader_text, GL_FRAGMENT_SHADER);
vert = create_shader(vert_shader_text, GL_VERTEX_SHADER);
program = glCreateProgram();
glAttachShader(program, frag);
glAttachShader(program, vert);
glLinkProgram(program);
glGetProgramiv(program, GL_LINK_STATUS, &status);
if (!status) {
char log[1000];
GLsizei len;
glGetProgramInfoLog(program, 1000, &len, log);
fprintf(stderr, "Error: linking:\n%*s\n", len, log);
exit(1);
}
glUseProgram(program);
glPos = 0;
glCol = 1;
glBindAttribLocation(program, glPos, "pos");
glBindAttribLocation(program, glCol, "color");
glLinkProgram(program);
glRotationUniform = glGetUniformLocation(program, "rotation");
}
开发者ID:emutavchi,项目名称:pxCore,代码行数:34,代码来源:SimpleOpenGL.cpp
示例12: initPointClouds
void initPointClouds(const char* vertS, const char* fragS, float pntSize) {
GLint link_ok = GL_FALSE;
GLuint vs, fs;
vs = create_shader(vertS, GL_VERTEX_SHADER);
fs = create_shader(fragS, GL_FRAGMENT_SHADER);
//printf("vs=%i fs=%i\n",vs,fs);
__pg.Partprogram = glCreateProgram();
glAttachShader(__pg.Partprogram, vs);
glAttachShader(__pg.Partprogram, fs);
glLinkProgram(__pg.Partprogram);
glGetProgramiv(__pg.Partprogram, GL_LINK_STATUS, &link_ok);
if (!link_ok) {
printf("particle glLinkProgram error \n");
print_log(__pg.Partprogram);
// return 0;
}
__pg.part_vert_attrib =
getShaderLocation(shaderAttrib, __pg.Partprogram, "vertex_attrib");
__pg.part_mvp_uniform =
getShaderLocation(shaderUniform, __pg.Partprogram, "mvp_uniform");
__pg.part_tex_uniform =
getShaderLocation(shaderUniform, __pg.Partprogram, "u_texture");
__pg.part_size_uniform =
getShaderLocation(shaderUniform, __pg.Partprogram, "u_point_size");
glUseProgram(__pg.Partprogram);
glUniform1f(__pg.part_size_uniform, pntSize);
}
开发者ID:PDKK,项目名称:doubleHexapod,代码行数:32,代码来源:support.c
示例13: params
Program::Program(map<string, GLint> params, string shader_name) : params(params) {
if ((vs = create_shader((shader_name+".v.glsl").c_str(), GL_VERTEX_SHADER)) == 0) exit(-1);
if ((fs = create_shader((shader_name+".f.glsl").c_str(), GL_FRAGMENT_SHADER)) == 0) exit(-1);
GLint compile_ok = GL_FALSE, link_ok = GL_FALSE;
id = glCreateProgram();
glAttachShader(id, vs);
glAttachShader(id, fs);
glLinkProgram(id);
glGetProgramiv(id, GL_LINK_STATUS, &link_ok);
if (!link_ok) {
fprintf(stderr, "glLinkProgram:");
print_log(id);
exit(-1);
}
for(auto& kv : this->params){
if(kv.first.substr(0, 7) == "uniform"){
bindUniform(kv.first.substr(8).c_str(), kv.second, id); /*uniform*/
}
else{
bindAttribute(kv.first.substr(10).c_str(), kv.second, id); /*attribute*/
}
}
}
开发者ID:Darks10,项目名称:HappyLand,代码行数:26,代码来源:Program.cpp
示例14: init_resources
int init_resources()
{
//added in the stuff for working with the color buffers here:
GLfloat triangle_colors[] = {
1.0, 1.0, 0.0,
0.0, 0.0, 1.0,
1.0, 0.0, 0.0,
};
glGenBuffers(1, &vbo_triangle_colors);//these are just like below, so shouldn't be anything
glBindBuffer(GL_ARRAY_BUFFER, vbo_triangle_colors);//new to you. gen buffer, pass stuff
glBufferData(GL_ARRAY_BUFFER, sizeof(triangles_colors), triangle_colors, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);//and then lastly unbind.
GLfloat triangle_vertices[] = {
0.0, 0.8,
-0.8, -0.8,
0.8, -0.8,
};
glGenBuffers(1, &vbo_triangle);
glBindBuffer(GL_ARRAY_BUFFER, vbo_triangle);
glBufferData(GL_ARRAY_BUFFER, sizeof(triangle_vertices), triangle_vertices, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
GLint link_ok = GL_FALSE;
GLuint vs, fs;
if ((vs = create_shader("triangle.v.glsl", GL_VERTEX_SHADER)) == 0) return 0;
if ((fs = create_shader("triangle.f.glsl", GL_FRAGMENT_SHADER)) == 0) return 0;
program = glCreateProgram();
glAttachShader(program, vs);
glAttachShader(program, fs);
glLinkProgram(program);
glGetProgramiv(program, GL_LINK_STATUS, &link_ok);
if (!link_ok)
{
fprintf(stderr, "glLinkProgram:");
return 0;
}
const char* attribute_name = "coord2d";
attribute_coord2d = glGetAttribLocation(program, attribute_name);
if (attribute_coord2d == -1)
{
fprintf(stderr, "Could not bind attribute %s\n", attribute_name);
return 0;
}
//this again should look familiar.
attribute_name = "v_color";
attribute_v_color = glGetAttribLocation(program, attribute_name);
if (attribute_v_color == -1)
{
fprintf(stderr, "Could not bind attribute %s\n", attribute_name);
return 0;
}
return 1;
}
开发者ID:Narcolapser,项目名称:Littlefoot-Landmines,代码行数:59,代码来源:s5.c
示例15: LoadShader
void Shader::LoadShader(const char* vertex,const char* fragment) {
std::vector<GLuint>shaders;
shaders.push_back(create_shader(vertex,GL_VERTEX_SHADER));
shaders.push_back(create_shader(fragment,GL_FRAGMENT_SHADER));
GLuint ProgramID=create_program(shaders);
programID=ProgramID;
}
开发者ID:tim099,项目名称:GameTest,代码行数:8,代码来源:Shader.cpp
示例16: createObj
int createObj(struct obj_t *obj, int numVerts, float *verts, float *txVert,
float *norms, char *vertShader, char *fragShader)
{
obj->num_verts = numVerts;
glGenBuffers(1, &obj->vbo_vert);
glBindBuffer(GL_ARRAY_BUFFER, obj->vbo_vert);
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 3 * numVerts, verts,
GL_STATIC_DRAW);
glGenBuffers(1, &obj->vbo_tex);
glBindBuffer(GL_ARRAY_BUFFER, obj->vbo_tex);
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 2 * numVerts, txVert,
GL_STATIC_DRAW);
glGenBuffers(1, &obj->vbo_norm);
glBindBuffer(GL_ARRAY_BUFFER, obj->vbo_norm);
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 3 * numVerts, norms,
GL_STATIC_DRAW);
GLint link_ok = GL_FALSE;
GLuint vs, fs;
if ((vs = create_shader(vertShader, GL_VERTEX_SHADER)) == 0)
return 0;
if ((fs = create_shader(fragShader, GL_FRAGMENT_SHADER)) == 0)
return 0;
obj->program = glCreateProgram();
glAttachShader(obj->program, vs);
glAttachShader(obj->program, fs);
glLinkProgram(obj->program);
glGetProgramiv(obj->program, GL_LINK_STATUS, &link_ok);
if (!link_ok) {
printf("glLinkProgram:");
print_log(obj->program);
return 0;
}
obj->vert_attrib =
getShaderLocation(shaderAttrib, obj->program, "vertex_attrib");
obj->tex_attrib =
getShaderLocation(shaderAttrib, obj->program, "uv_attrib");
obj->norm_attrib =
getShaderLocation(shaderAttrib, obj->program, "norm_attrib");
obj->mvp_uniform =
getShaderLocation(shaderUniform, obj->program, "mvp_uniform");
obj->mv_uniform =
getShaderLocation(shaderUniform, obj->program, "mv_uniform");
obj->tex_uniform =
getShaderLocation(shaderUniform, obj->program, "u_texture");
obj->lightDir_uniform =
getShaderLocation(shaderUniform, obj->program, "u_lightDir");
obj->viewDir_uniform =
getShaderLocation(shaderUniform, obj->program, "u_viewDir");
}
开发者ID:PDKK,项目名称:PodDisplay,代码行数:58,代码来源:obj.c
示例17: init_gl
static void
init_gl(struct window *window)
{
GLuint frag, vert;
GLuint program;
GLint status;
frag = create_shader(window, frag_shader_text, GL_FRAGMENT_SHADER);
vert = create_shader(window, vert_shader_text, GL_VERTEX_SHADER);
program = glCreateProgram();
if (g_UseBinary) {
load_program_binary("simple-egl-shader.fx", 0x9130, program);
glUseProgram(program);
window->gl.pos = 0;
window->gl.col = 1;
glBindAttribLocation(program, window->gl.pos, "pos");
glBindAttribLocation(program, window->gl.col, "color");
}
else
{
glAttachShader(program, frag);
glAttachShader(program, vert);
glLinkProgram(program);
glGetProgramiv(program, GL_LINK_STATUS, &status);
if (!status) {
char log[1000];
GLsizei len;
glGetProgramInfoLog(program, 1000, &len, log);
fprintf(stderr, "Error: linking:\n%*s\n", len, log);
exit(1);
}
if (g_CompileBinary) {
compile_program_binary(program, "simple-egl-shader.fx");
exit(EXIT_SUCCESS);
}
glUseProgram(program);
window->gl.pos = 0;
window->gl.col = 1;
glBindAttribLocation(program, window->gl.pos, "pos");
glBindAttribLocation(program, window->gl.col, "color");
glLinkProgram(program);
}
window->gl.rotation_uniform =
glGetUniformLocation(program, "rotation");
}
开发者ID:4DA,项目名称:glesv2-binary-shader,代码行数:57,代码来源:simple-egl.c
示例18: init_resources
int init_resources()
{
GLfloat triangle_attributes[] ={
0.0, 0.8, 1.0, 1.0, 0.0,
-0.8, -0.8, 0.0, 0.0, 1.0,
0.8, -0.8, 1.0, 0.0, 0.0,
};
glGenBuffers(1, &vbo_triangle);
glBindBuffer(GL_ARRAY_BUFFER, vbo_triangle);
glBufferData(GL_ARRAY_BUFFER, sizeof(triangle_attributes), triangle_attributes, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
GLint link_ok = GL_FALSE;
GLuint vs, fs;
if ((vs = create_shader("triangle6.v.glsl", GL_VERTEX_SHADER)) == 0) return 0;
if ((fs = create_shader("triangle8.f.glsl", GL_FRAGMENT_SHADER)) == 0) return 0;
program = glCreateProgram();
glAttachShader(program, vs);
glAttachShader(program, fs);
glLinkProgram(program);
glGetProgramiv(program, GL_LINK_STATUS, &link_ok);
if (!link_ok)
{
fprintf(stderr, "glLinkProgram:");
return 0;
}
const char* attribute_name = "coord2d";
attribute_coord2d = glGetAttribLocation(program, attribute_name);
if (attribute_coord2d == -1)
{
fprintf(stderr, "Could not bind attribute %s\n", attribute_name);
return 0;
}
attribute_name = "v_color";
attribute_v_color = glGetAttribLocation(program, attribute_name);
if (attribute_v_color == -1)
{
fprintf(stderr, "Could not bind attribute %s\n", attribute_name);
return 0;
}
const char* uniform_name;
uniform_name = "fade";
uniform_fade = glGetUniformLocation(program, uniform_name);
if (uniform_fade == -1)
{
fprintf(stderr, "could not bind uniform %s\n",uniform_name);
return 0;
}
return 1;
}
开发者ID:Narcolapser,项目名称:Littlefoot-Landmines,代码行数:56,代码来源:s10.cpp
示例19: setup_program
void setup_program(GLuint* program_id)
{
GLuint shaders[2];
fprintf (stderr, "This routine was called\n");
shaders[1] = create_shader("FragmentShader.glsl",GL_FRAGMENT_SHADER);
shaders[0] = create_shader("VertexShader.glsl",GL_VERTEX_SHADER);
program_id[0] = create_gl_program(shaders, 2, GL_TRUE);
}
开发者ID:PIesy,项目名称:LifeGame,代码行数:10,代码来源:main.c
示例20: create_program
/// \brief Create program.
///
/// \param vertex Vertex shader.
/// \param fragment Fragment shader.
/// \return Program ID
GLuint create_program(const char *vertex, const char *fragment)
{
GLuint ret = dnload_glCreateProgram();
dnload_glAttachShader(ret, create_shader(vertex, GL_VERTEX_SHADER));
dnload_glAttachShader(ret, create_shader(fragment, GL_FRAGMENT_SHADER));
dnload_glLinkProgram(ret);
return ret;
}
开发者ID:faemiyah,项目名称:dnload,代码行数:16,代码来源:quad.cpp
注:本文中的create_shader函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论