Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <vector>
- #include <string>
- #include <GL/glew.h>
- #include <Cg/cg.h>
- #include <Cg/cgGL.h>
- #include <SDL2/SDL.h>
- int main()
- {
- SDL_Window *mainwindow;
- SDL_GLContext maincontext;
- SDL_Init(SDL_INIT_VIDEO);
- SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
- SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
- SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
- SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
- mainwindow = SDL_CreateWindow("Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 512, 512, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
- maincontext = SDL_GL_CreateContext(mainwindow);
- glewExperimental = GL_TRUE;
- glewInit();
- _CGcontext* cgcontext;
- cgcontext = cgCreateContext();
- cgGLRegisterStates(cgcontext);
- CGerror error;
- CGeffect effect;
- const char* string;
- std::string shader;
- shader =
- "struct VS_INPUT"
- "{"
- " float3 pos : ATTR0;"
- "};"
- "struct FS_INPUT"
- "{"
- " float4 pos : POSITION;"
- " float2 tex : TEXCOORD0;"
- "};"
- "struct FS_OUTPUT"
- "{"
- " float4 color : COLOR;"
- "};"
- "FS_INPUT VS( VS_INPUT In )"
- "{"
- " FS_INPUT Out;"
- " Out.pos = float4( In.pos, 1.0f );"
- " Out.tex = float2( 0.0f, 0.0f );"
- " return Out;"
- "}"
- "FS_OUTPUT FS( FS_INPUT In )"
- "{"
- " FS_OUTPUT Out;"
- " Out.color = float4(1.0f, 0.0f, 0.0f, 1.0f);"
- " return Out;"
- "}"
- "technique t0"
- "{"
- " pass p0"
- " {"
- " VertexProgram = compile gp4vp VS();"
- " FragmentProgram = compile gp4fp FS();"
- " }"
- "}";
- effect = cgCreateEffect(cgcontext, shader.c_str(), NULL);
- error = cgGetError();
- if(error)
- {
- string = cgGetLastListing(cgcontext);
- fprintf(stderr, "Shader compiler: %s\n", string);
- }
- glClearColor ( 0.0, 0.0, 1.0, 1.0 );
- glClear ( GL_COLOR_BUFFER_BIT );
- float* vert = new float[9];
- vert[0] = 0.0; vert[1] = 0.5; vert[2] =-1.0;
- vert[3] =-1.0; vert[4] =-0.5; vert[5] =-1.0;
- vert[6] = 1.0; vert[7] =-0.5; vert[8]= -1.0;
- unsigned int m_vaoID;
- unsigned int m_vboID;
- glGenVertexArrays(1, &m_vaoID);
- glBindVertexArray(m_vaoID);
- glGenBuffers(1, &m_vboID);
- glBindBuffer(GL_ARRAY_BUFFER, m_vboID);
- glBufferData(GL_ARRAY_BUFFER, 9 * sizeof(GLfloat), vert, GL_STATIC_DRAW);
- glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
- glEnableVertexAttribArray(0);
- CGtechnique tech = cgGetFirstTechnique( effect );
- CGpass pass = cgGetFirstPass(tech);
- while (pass)
- {
- cgSetPassState(pass);
- glDrawArrays(GL_TRIANGLES, 0, 3);
- cgResetPassState(pass);
- pass = cgGetNextPass(pass);
- }
- glDisableVertexAttribArray( 0 );
- glBindVertexArray(0);
- delete[] vert;
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glDeleteBuffers(1, &m_vboID);
- glDeleteVertexArrays(1, &m_vaoID);
- SDL_GL_SwapWindow(mainwindow);
- bool state = true;
- while (state)
- {
- SDL_Event event;
- while (SDL_PollEvent(&event))
- {
- switch (event.type)
- {
- case SDL_QUIT:
- state = false;
- break;
- case SDL_KEYDOWN:
- state = false;
- break;
- case SDL_KEYUP:
- state = false;
- break;
- default:
- break;
- }
- }
- }
- SDL_GL_DeleteContext(maincontext);
- SDL_DestroyWindow(mainwindow);
- SDL_Quit();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement