本文整理汇总了C++中Program::BindFragDataLocation方法的典型用法代码示例。如果您正苦于以下问题:C++ Program::BindFragDataLocation方法的具体用法?C++ Program::BindFragDataLocation怎么用?C++ Program::BindFragDataLocation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Program
的用法示例。
在下文中一共展示了Program::BindFragDataLocation方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main()
{
DisplaySDL2 display(0,0,1024,768,"Olá mundo");
glm::mat4 model;
glEnable(GL_DEPTH_TEST);
GLfloat vertices[] = {
0.5f, 0.5f, 0.5f, 1.0f,0.0f,0.0f,
-0.5f, 0.5f, 0.5f, 0.0f,1.0f,0.0f,
-0.5f,-0.5f, 0.5f, 0.0f,0.0f,1.0f,
0.5f,-0.5f, 0.5f, 1.0f,1.0f,1.0f,
0.5f, 0.5f, -0.5f, 1.0f,0.0f,0.0f,
-0.5f, 0.5f, -0.5f, 0.0f,1.0f,0.0f,
-0.5f,-0.5f, -0.5f, 0.0f,0.0f,1.0f,
0.5f,-0.5f, -0.5f, 1.0f,1.0f,1.0f,
};
GLuint elements[] = {
0,1,2,
0,2,3,
4,5,6,
4,6,7,
4,5,1,
4,1,0,
5,6,2,
5,2,1,
0,3,7,
4,0,7,
3,2,6,
3,6,7
};
GLuint vao;
glGenVertexArrays(1,&vao);
glBindVertexArray(vao);
GLuint vbo;
glGenBuffers(1,&vbo);
glBindBuffer(GL_ARRAY_BUFFER,vbo);
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices),vertices,GL_STATIC_DRAW);
GLuint ebo;
glGenBuffers(1,&ebo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,ebo);
glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(elements),elements,GL_STATIC_DRAW);
Shader vertex("vertex.glsl",GL_VERTEX_SHADER);
Shader fragment("fragment.glsl",GL_FRAGMENT_SHADER);
Program program;
program.AttachShader(vertex);
program.AttachShader(fragment);
program.BindFragDataLocation("outColor",0);
program.Link();
program.Use();
GLuint posAttrib = program.EnableAttrib("pos");
GLuint colorAttrib = program.EnableAttrib("color");
GLuint uniformModel = glGetUniformLocation(program.getId(),"model");
GLuint uniformView = glGetUniformLocation(program.getId(),"view");
GLuint uniformProj = glGetUniformLocation(program.getId(),"proj");
glVertexAttribPointer(posAttrib,3,GL_FLOAT,GL_FALSE,6*sizeof(GLfloat),0);
glVertexAttribPointer(colorAttrib,3,GL_FLOAT,GL_FALSE,6*sizeof(GLfloat),(void *) (3*sizeof(GLfloat)));
glm::mat4 proj = glm::perspective(45.0f,display.getRatio(),0.1f,100.0f);
glm::mat4 view = glm::lookAt( glm::vec3(0,1,3.0f),
glm::vec3(0,0,0),
glm::vec3(0,1.0f,0));
glViewport(0,0,display.getWidth(),display.getHeight());
glUniformMatrix4fv(uniformProj,1,GL_FALSE,glm::value_ptr(proj));
glUniformMatrix4fv(uniformView,1,GL_FALSE,glm::value_ptr(view));
float i = 1;
while(!display.UserWannaQuit())
{
model = glm::rotate(model,i,glm::vec3(0,1,0));
glUniformMatrix4fv(uniformModel,1,GL_FALSE,glm::value_ptr(model));
display.Delay(1000/60);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
display.CleanScreen(0,0,0,1.0f);
glDrawElements(GL_TRIANGLES,36,GL_UNSIGNED_INT,0);
display.SwapBuffers();
}
//.........这里部分代码省略.........
示例2: main
int main(int argc, char** argv)
{
int width = 800;
int height = 600;
SDL_Window* window = SDL_CreateWindow("Demo: A Modern OpenGL Application in Modern C++", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL);
if(window == nullptr)
{
std::cerr << SDL_GetError() << std::endl;
return 0;
}
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
SDL_GLContext context = SDL_GL_CreateContext(window);
if(context == nullptr)
{
SDL_DestroyWindow(window);
std::cerr << SDL_GetError() << std::endl;
return 0;
}
glewInit();
// OpenGL initialization
using namespace Render::OpenGL;
Program program;
Shader vertex("../shaders/simple.vert");
program.AttachShader(vertex);
vertex.Compile();
vertex.PrintInfoLog();
Shader fragment("../shaders/simple.frag");
program.AttachShader(fragment);
fragment.Compile();
fragment.PrintInfoLog();
program.BindFragDataLocation(0, "FragColor");
program.Link();
program.PrintInfoLog();
program.Use();
program.PrintInfoLog();
PrintError();
glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 1.0f, 100.f);
program.UniformMatrix("Projection", Projection);
glm::mat4 Modelview = glm::translate(glm::mat4(1.0f), glm::vec3(0.f,0.f,-4.0f));
program.UniformMatrix("Modelview", Modelview);
glViewport(0,0,800,600);
for(int i = 0; i < 3000; i++)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_TRIANGLES);
program.VertexAttrib("Vertex", 0.f, 0.f, 0.f);
program.VertexAttrib("Vertex", 0.f, .5f, 0.f);
program.VertexAttrib("Vertex", .5f, .5f, 0.f);
glEnd();
SDL_GL_SwapWindow(window);
SDL_Delay(1);
}
SDL_GL_DeleteContext(context);
SDL_DestroyWindow(window);
return 0;
}