2013-05-24 4 views
0

Salut J'essaie de dessiner une sphère translucide en utilisant OpenGL/glut;SFML prend-il en charge la transparence?

La chose la plus simple que je pense est d'afficher le code: C'est ce que j'ai en ce moment;

glutInit(&argc, argv); 

sf::ContextSettings settings; 
settings.depthBits = 32; 
settings.stencilBits = 0; 
settings.antialiasingLevel = 0; 

sf::Window window(sf::VideoMode(800, 600), "insert title", sf::Style::Default, settings); 
window.setVerticalSyncEnabled(true); 


glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glEnable(GL_BLEND); 
glClearColor(0.0,0.0,0.0,0.0); 


bool running = true; 
while(running) 
{ 
    sf::Event e; 
    while(window.pollEvent(e)) 
    { 
     if(e.type == sf::Event::Closed) 
     { 
      running = false; 
     } 

     if(e.type == sf::Event::Resized) 
     { 
      glViewport(0, 0, e.size.width, e.size.height); 

      glMatrixMode(GL_PROJECTION); 

      glLoadIdentity(); 
      gluPerspective(45.0, (double)e.size.width/(double)e.size.height, 0.1, 2000.0); 

      gluLookAt(0,0,0, 1,0,0, 0,1,0); 

      glMatrixMode(GL_MODELVIEW); 
     } 
    } 

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); 

    glColor4d(1.0, 0.0, 0.0, 0.5); 

    glutWireSphere(0.5, 4, 4); 

    window.display(); 
} 

Ran cette chose sous optirun et sans optirun ... Pas de transparence cependant!

J'ai lu quelque part que le contexte doit avoir un tampon alpha ... Est-ce que SFML le supporte?

+0

Ce code possède toutes les caractéristiques du codage copier-coller. S'il vous plaît ne faites pas ça. –

+0

Il n'y a pas de copier/coller ici. – user3728501

+0

Utilisez-vous GLUT xor SFML? – genpfault

Répondre

3

Votre code est très confus.

FreeGLUT et SFML font la même chose en ce qui concerne OpenGL: ils créent des fenêtres avec des contextes OpenGL. Vous ne devrait pas les utiliser tous les deux dans la même application.

De même, vous ne pouvez pas appeler les fonctions OpenGL tant que vous n'avez pas créé la fenêtre. Et ces fonctions seulement affectent le contexte actuel. Ces fonctions auront aucun effet sur le nouveau contexte que vous créez avec SFML. Votre code n'a tout simplement pas de sens.

+0

J'ai fait un montage. – user3728501

+1

@EdwardBird: Vous appelez toujours les fonctions GLUT (et donc l'inclure dans votre projet SFML). Ne mélangez pas GLUT et SFML. –

+0

Sinon, comment vais-je dessiner une sphère? – user3728501