本文整理汇总了C++中ShaderProgram::Init方法的典型用法代码示例。如果您正苦于以下问题:C++ ShaderProgram::Init方法的具体用法?C++ ShaderProgram::Init怎么用?C++ ShaderProgram::Init使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ShaderProgram
的用法示例。
在下文中一共展示了ShaderProgram::Init方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ShaderProgram
gfx::ShaderProgramHandle gfx::ShaderBank::LoadShaderProgramFromShaders ( const std::vector< Shader* >& shaders ) {
ShaderProgram* program = new ShaderProgram();
program->Init(shaders, true);
ShaderProgramHandle handle = m_Counter++;
m_Programs.push_back(program);
m_HandleToPrograms.emplace(handle, program);
return handle;
}
示例2: SORA_test_draw2
void SORA_test_draw2(int w, int h) {
static bool init = false;
static ShaderProgram shader;
static TextureManager tex_mgr;
if(init == false) {
init = true;
//create shader
//2d shader
std::string app_vert_path = sora::Filesystem::GetAppPath("shader/simple.vs");
std::string app_frag_path = sora::Filesystem::GetAppPath("shader/simple.fs");
sora::MemoryFile vert_file(app_vert_path);
sora::MemoryFile frag_file(app_frag_path);
vert_file.Open();
frag_file.Open();
const char *vert_src = (const char*)(vert_file.start);
const char *frag_src = (const char*)(frag_file.start);
bool prog_result = shader.Init(vert_src, frag_src);
if(prog_result == false) {
LOGE("Could not create program.");
}
{
std::string tex_path = sora::Filesystem::GetAppPath("texture/sora.png");
sora::MemoryFile tex_file(tex_path);
tex_file.Open();
Texture tex("sora");
tex.SetData(sora::Texture::kFilePNG, tex_file.start, tex_file.end);
tex_mgr.Add(tex);
}
}
static float a = 0;
a += 0.1f;
glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glViewport(0, 0, w, h);
SR_CHECK_ERROR("Render 2d start");
//draw 2d something
glm::mat4 world_mat(1.0f);
int pos_loc = shader.GetAttribLocation("a_position");
int tex_loc = shader.GetAttribLocation("a_texcoord");
glEnableVertexAttribArray(pos_loc);
glEnableVertexAttribArray(tex_loc);
int mvp_loc = shader.GetUniformLocation("u_worldViewProjection");
float vertex[] = {
-0.5, -0.5, 0,
0.5, -0.5, 0,
0, 0.5, 0,
};
float texcoord[] = {
0, 0,
1, 0,
0.5, 1,
};
glUseProgram(shader.prog);
Texture *tex = tex_mgr.Get_ptr(string("sora"));
glBindTexture(GL_TEXTURE_2D, tex->handle());
glUniformMatrix4fv(mvp_loc, 1, GL_FALSE, glm::value_ptr(world_mat));
glVertexAttribPointer(pos_loc, 3, GL_FLOAT, GL_FALSE, 0, vertex);
glVertexAttribPointer(tex_loc, 2, GL_FLOAT, GL_FALSE, 0, texcoord);
glDrawArrays(GL_TRIANGLE_FAN, 0, 3);
SR_CHECK_ERROR("glDrawArrays");
}