void Widget::initializeGL() { qDebug() << "isValid:" << this->context()->isValid(); qDebug() << "isSharing:" << this->context()->isSharing(); qDebug() << "hasOpenGL:" << this->context()->format().hasOpenGL(); qDebug() << "Format:" << this->context()->format(); glEnable(GL_DEPTH_TEST); QString vertexShaderSource( "uniform mat4 modelViewMatrix;\n" "uniform mat4 projectionMatrix;\n" "attribute vec4 vertexPosition;\n" "\n" "void main(void)\n" "{\n" " gl_Position = projectionMatrix * modelViewMatrix * vertexPosition;\n" "}\n"); QString fragmentShaderSource( "precision mediump float;\n" "\n" "void main(void)\n" "{\n" "gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0);\n" "}\n"); QGLShader *vertexShader = new QGLShader(QGLShader::Vertex, this); QGLShader *fragmentShader = new QGLShader(QGLShader::Fragment, this); qDebug() << "After constuctor Shaders."; qDebug() << vertexShader->log(); vertexShader->compileSourceCode(vertexShaderSource); fragmentShader->compileSourceCode(fragmentShaderSource); _shaderProgram = new QGLShaderProgram(this); _shaderProgram->addShader(vertexShader); _shaderProgram->addShader(fragmentShader); _shaderProgram->link(); _shaderProgram->bind(); qglClearColor(Qt::gray); _timer->start(10); qDebug() << vertexShader->log(); }
int main( int argc, char* argv[] ) { if( SDL_Init( SDL_INIT_VIDEO ) != 0 ) { std::cerr << "SDL Error: " << SDL_GetError() << '\n'; return 0; } atexit( SDL_Quit ); SDL_Surface* surface = SDL_SetVideoMode( 800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_OPENGL ); if( surface == nullptr ) { std::cerr << "SDL Error: " << SDL_GetError() << '\n'; exit( 1 ); } SDL_WM_SetCaption( "OpenGL", nullptr ); glewExperimental = GL_TRUE; GLenum glewInitError( glewInit() ); if( glewInitError != GLEW_OK ) { std::cerr << "SDL Error: " << glewGetErrorString( glewInitError ) << '\n'; exit( 2 ); } GLuint vertexBuffer; glGenBuffers( 1, &vertexBuffer ); // shader code GLuint vertexShaderHandle( glCreateShader( GL_VERTEX_SHADER ) ); std::ifstream vertexShaderSource( "Identity.vs" ); GLuint fragmentShaderHandle( glCreateShader( GL_FRAGMENT_SHADER ) ); std::ifstream fragmentShaderSource( "Identity.fs" ); glCompileShader( vertexShaderHandle ); glCompileShader( fragmentShaderHandle ); GLuint shaderProgramHandle( glCreateProgram() ); glAttachShader( shaderProgramHandle, vertexShaderHandle ); glAttachShader( shaderProgramHandle, fragmentShaderHandle ); glBindAttribLocation( vertexShaderHandle, 0, "vertex" ); glBindAttribLocation( vertexShaderHandle, 1, "color" ); glLinkProgram( shaderProgramHandle ); glDeleteShader( vertexShaderHandle ); glDeleteShader( fragmentShaderHandle ); glUseProgram( shaderProgramHandle ); glClearColor( 0.0f, 0.0f, 1.0f, 1.0f ); SDL_Event windowEvent; while( true ) { if( SDL_PollEvent( &windowEvent ) ) { if( windowEvent.type == SDL_QUIT ) break; if( windowEvent.type == SDL_KEYDOWN ) { std::cout << "key " << static_cast< char >( windowEvent.key.keysym.sym ) << " is down\n"; } } glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT ); // draw a triangle glBegin( GL_TRIANGLES ); glVertex3f( -0.5f, 0.0f, 0.0f ); glColor4f( 1.0f, 0.0f, 0.0f, 1.0f ); glVertex3f( 0.5f, 0.0f, 0.0f ); glColor4f( 0.0f, 1.0f, 0.0f, 1.0f ); glVertex3f( 0.0f, 0.5f, 0.0f ); glColor4f( 0.0f, 0.0f, 1.0f, 1.0f ); glEnd(); SDL_GL_SwapBuffers(); std::cout << std::flush; } glDeleteProgram( shaderProgramHandle ); }