Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 15, 2025 00:09

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Dez 16, 2008 23:15 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hallo zusammen.

Da es mittlerweile ja doch den ein oder anderen Java-Coder hierher verschlagen hat, hoffe ich auf eure kompetente Hilfe 8).

Folgendes. Ich hab einen JUnit Test. Innerhalb des Tests soll eine Texturerstellt werden. Das ganze funktioniert solange gut, wie alles in einem Thread bleibt - OpenGL halt.
Scheinbar haut mir JUnit hier aber einen Thread zwischen die Füße, und ich weiß nicht wie ich das beheben soll.

Hier der Fehler:

Code:
  1. javax.media.opengl.GLException: No OpenGL context current on this thread
  2.     at javax.media.opengl.glu.GLU.getCurrentGL(GLU.java:234)
  3.     at com.sun.opengl.util.texture.Texture.<init>(Texture.java:179)
  4.     at com.sun.opengl.util.texture.TextureIO.newTexture(TextureIO.java:445)
  5.     at com.sun.opengl.util.texture.TextureIO.newTexture(TextureIO.java:539)
  6.     at jogl_ttf.basics.implementation.TTF_Loader.loadFont(TTF_Loader.java:113)
  7.     at jogl_ttf.util.implementation.TTF_Font_Manager.addFont(TTF_Font_Manager.java:157)
  8.     at jogl_ttf.util.implementation.TTF_Font_Manager_Tester.test_FontExistsLoadDelete(TTF_Font_Manager_Tester.java:40)
  9.  


Hier der Code (wie man sieht, hab ich schon versucht alles in die Methode zu werfen, nützt aber nix):
Code:
  1. package jogl_ttf.util.implementation;
  2.  
  3. import java.io.File;
  4.  
  5. import javax.media.opengl.GLCanvas;
  6. import javax.media.opengl.GLCapabilities;
  7.  
  8. import com.sun.opengl.util.Animator;
  9.  
  10. import junit.framework.TestCase;
  11.  
  12. public class TTF_Font_Manager_Tester extends TestCase {
  13.  
  14.    
  15.     public void test_FontExistsLoadDelete() {
  16.        
  17.         /*
  18.          * SetUp must be made here, because JOGL is not multithreading
  19.          * enabled - JUnit is.
  20.          */
  21.         GLCapabilities capabilities = new GLCapabilities();
  22.         capabilities.setHardwareAccelerated(true);
  23.         capabilities.setDoubleBuffered(true);
  24.         capabilities.setStencilBits(8);
  25.  
  26.         GLCanvas canvas = new GLCanvas(capabilities);
  27.         Animator animator = new Animator(canvas);
  28.         animator.start();
  29.        
  30.         TTF_Font_Manager mgr = new TTF_Font_Manager(canvas );
  31.         String sep = File.separator;
  32.         mgr.setFontDir(System.getProperty("user.dir")+sep);
  33.         System.out.println(System.getProperty("user.dir")+sep);
  34.        
  35.        
  36.        
  37.         //The font is not loaded, yet.
  38.         assertFalse( mgr.fontExists("ariblk", 8) );
  39.        
  40.         assertEquals( mgr.addFont(null, 8, "ariblk", canvas.getGL()),
  41.                     TTF_Font_Manager.TTF_FONT_MANAGER_NO_ERROR);
  42.        
  43.         assertTrue( mgr.fontExists("ariblk", 8) );
  44.     }
  45.    
  46.    
  47. }
  48.  

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 16, 2008 23:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Kurz gesucht und gefunden, vielleicht hilfts:

Code:
  1. import static javax.media.opengl.Threading.disableSingleThreading;

Code:
  1. disableSingleThreading()


Falls dein system kein multitheaded OpenGL unterstuetzt kannst du auch noch die Methode invokeOnOpenGLThread ausprobieren:
Code:
  1. import static javax.media.opengl.Threading.invokeOnOpenGLThread;


Ansonsten vermute ich das der Animator einen neuen Thread fuer OpenGL started und du deshalb in dem JUnit Thread keine OpenGL Befehle ausfuehren kannst. Evt. kann man JOGL auch im selben Thread benutzen wenn man die richtige API nutzt.

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]