Bonjour,

J'avais l'habitude d'utiliser Irrlicht, mais je ne m'étais jamais vraiment plongé dans OpenGL.

Mon objectif est juste de dessiner un malheureux petit cube, mais après de multiples recherches, je n'ai trouvé aucun code fonctionnel que je pourrais compiler à la fois avec g++ et emscripten. J'ai essayé de dessiner des triangles, sans plus de succès (assertions qui se déclenchent, écran noirs, erreurs avec emscripten, …). En effet la plupart des exemples d'emscripten me lèvent des assertions lorsque je les compile avec g++ puis que je les compile. Et les exemples "normaux" utilisent des fonctions non supportée par emscripten.
Sachant que je souhaiterais rester dans le WebGL-friendly subset of OpenGL à cause de emscripten.

Je me demande donc si cela vient de moi, des codes que j'ai trouvé ou même de mon Linux/ordinateur voir même des 3 .

Mon but ultime étant juste de :
  • dessiner 9x6 cubes ;
  • les faire changer de couleur au clic ;
  • faire apparaître d'autres cubes ;
  • déplacer la caméra ;
  • faire faire une rotation à mon ensemble.

Rien de bien insurmontable en somme, d'autant plus que juste pour afficher des cubes, je ne pense pas avoir besoin de quelconques astuces d'optimisations. Mais je bloque déjà rien que pour afficher un bête triangle .



Pourriez-vous m'accompagner et me rediriger vers une ressource "sûre" permettant de dessiner un petit triangle de couleur unie afin de partir sur des bonnes bases ?
Merci d'avance pour votre aide.



Voici le seul code fonctionnel que j'ai réussi à trouver :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <GL/glew.h>
#include <GL/glut.h>
 
 
 
static int make_resources(void)
{
    return 1;
}
static void update_fade_factor(void)
{
}
 
 
static void render(void)
{
    glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);
 
    // ??????
 
    glutSwapBuffers();
}
 
 
 
int main(int argc, char** argv)
{
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
  glutInitWindowSize(400, 300);
  glutCreateWindow("Hello World");
  glutDisplayFunc(&render);
  glutIdleFunc(&update_fade_factor);
 
  glewInit();
 
printf("OpenGL version supported by this platform (%s): \n", glGetString(GL_VERSION));
 
  if (!GLEW_VERSION_2_0) {
      fprintf(stderr, "OpenGL 2.0 not available\n");
      return 1;
    }
 
  if (!make_resources()) {
      fprintf(stderr, "Failed to load resources\n");
      return 1;
    }
 
  glutMainLoop();
  return 0;
}