Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Спасите - помогите. Java OpenGL не работает метод setCursor( )

45K
26 декабря 2014 года
Grom_UA
13 / / 13.07.2013
Делаю 3d движок на JAVA OpenGL около года. Взялся вчера оформлять меню, попробовал заменить указатель курсора своим изображением, ничего не получается. В самом редакторе, который работает исключительно на Java через paintComponent ( ) все выходит - могу удалить курсор, могу заменить. Но когда перехожу в окно JPanel к которому подключен openGL курсор остается стандартным.
Я вырезал весь код и упростил как мог программу, чтобы оставить саму схему, код рабочий. Подскажите с курсором если кто в курсе.


Код:
package jaga;
import static org.lwjgl.opengl.GL11.*;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Point;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.lwjgl.opengl.*;
import org.lwjgl.*;

public class JaGa
{      
    public static void main(String[] args)
    {      
            new JaGa();
    }
   
   
    public JaGa()
    {
           frame=new Andrew();
           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           frame.setVisible(true);
    }
 
  static Andrew frame;
 
  class Andrew extends JFrame
  {
    private static final long serialVersionUID = 1L;

        public Andrew()
        {
            setSize(1200,800);
            setTitle("Jag Editor");
            Engine engine=new Engine();
            Container pane=getContentPane();
            pane.add(engine);
        }
  }

  class Engine extends JPanel
 { 
    private static final long serialVersionUID = 1L;
    Cursor menuCursor;

    public Engine()
    {
        try {
              Display.setDisplayMode(new DisplayMode(1280,800));
              Display.setTitle("Jag Engine");
              Display.create();

            } catch (LWJGLException e) { e.printStackTrace(); }
                                                                                   
            glMatrixMode(GL_PROJECTION);
            glLoadIdentity();
            glMatrixMode(GL_MODELVIEW);    
            glEnable(GL_TEXTURE_2D);
            glLoadIdentity();
            glOrtho(0,1280,800,0,1,-1);
            glEnable(GL_BLEND);
            glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
            glDisable(GL_DEPTH_TEST);

            try { menuCursor=Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage("res/texture/menu/shotDouble.png"), new Point(0, 0), "menuCursor"); } catch (Exception c) {  }                
            try { this.setCursor(menuCursor); } catch (Exception c) {  }
           
              while (!Display.isCloseRequested())
              {
                    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
                    Display.update();
                    Display.sync(60);
              }
     
      Display.destroy();           
    }
 }
}
1
27 декабря 2014 года
kot_
7.3K / / 20.01.2000
почему бы тебе не попробовать обработать эксепшен? Возможно оно тебе покажет что то интересное.
Будет время завтра протестирую код
45K
27 декабря 2014 года
Grom_UA
13 / / 13.07.2013
В том и дело, что все работает как часы, но на экране все равно стандартный указатель. А когда уходишь из движка обратно в редактор, там уже появляется прикрепленный рисунок курсора. То есть сам метод работает, но при подключенyом openGL самой замены изображения не наблюдается.
Exception я убрал когда уже убедился, что ошибок нет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог