Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2017, 09:23   #1
Verizon
Новичок
Джуниор
 
Регистрация: 11.03.2017
Сообщений: 1
По умолчанию Вывод текста на графическую форму с помощью JOGL

Имеется небольшой код с графикой JOGL
Код:
package objects;
 
import com.jogamp.opengl.GL;
import com.jogamp.opengl.GL2;
import com.jogamp.opengl.GLAutoDrawable;
import com.jogamp.opengl.GLEventListener;
import com.jogamp.opengl.awt.GLCanvas;
import com.jogamp.opengl.glu.GLU;
import com.jogamp.opengl.util.awt.Overlay;
import com.jogamp.opengl.util.awt.TextRenderer;
import com.jogamp.opengl.util.gl2.GLUT;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JTextArea;
 
 
public class Graphic extends JFrame{
 
    //колич. меток в канале
     public static final int MT_CNL = 16;
    //количество каналов
     public static final int NB_CNL = 120;
 
    // переменные координат меток
    short [] x = new short [NB_CNL]; 
    short [] [] y = new short [NB_CNL][MT_CNL]; 
    short [] xm = new short [NB_CNL];
    short [] [] ym = new short [NB_CNL][MT_CNL]; 
    short CntMt;
    short AllMt;
 
    GLCanvas glcanvas = new GLCanvas();
    
    // конструктор класса Graphic 
    public Graphic() {
        // инициализация компонентов
        initComponents();
    }
 
    // метод инициализации компонентов формы
    private void initComponents(){
        // положение формы на экране
        this.setBounds(20,20,600,500);
        // размер формы
        this.setSize(600, 500);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        glcanvas.addGLEventListener(new Renderer());
        glcanvas.setSize( 600, 500 );
        add(glcanvas);
        
    }
    
   // Код OpenGL, который отображает кадр 
    public final class Renderer implements GLEventListener
    {
        private GLU glu = new GLU();
        private int WinHeight = 500;
        private int WinWidth = 600;
        
    Overlay overlay;
    TextRenderer tr ;
 
        @Override
        public void init(GLAutoDrawable gLDrawable){
            this.overlay = new Overlay(gLDrawable);
            System.out.println("init() called");
            GL2 gl = gLDrawable.getGL().getGL2();
            gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
            gl.glShadeModel(GL2.GL_FLAT);
        }
 
        @Override
        public void dispose(GLAutoDrawable arg0)
        {
            System.out.println("dispose() called");
            this.overlay = null;
        } 
        
        @Override
        public void display(GLAutoDrawable gLDrawable)
        {
            Graphics2D g2d = this.overlay.createGraphics();
            final GL2 gl = gLDrawable.getGL().getGL2();
            
            gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);//очистка-заливка пиксельного буффера цветом очистки экрана
            // Код OpenGL, который отображает кадр 
            gl.glMatrixMode(GL2.GL_PROJECTION);
            gl.glLoadIdentity();
            gl.glOrtho(-WinWidth/2, WinWidth/2, -WinHeight/2, WinHeight/2, -1.0, 1.0);
            // горизонтальные и вертикальные линии сетки
            gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);
            gl.glBegin(GL2.GL_LINES);
            gl.glColor3f(1.0f, 1.0f, 1.0f);
 
            // по горизонтали
            for(int i = -WinWidth/2; i <= WinWidth/2; i += 5){
                if(i%100 == 0 || i == 0) {
                    gl.glColor3f(0.0f, 1.0f, 1.0f);
                }
                else {
                    gl.glColor3f(0.5f, 0.5f, 0.5f);
                }
                gl.glVertex2f(i, -WinHeight);
                gl.glVertex2f(i, WinWidth);
            }
            gl.glColor3f(0.5f, 0.5f, 0.5f);
            // по вертикали
             for(int i = -WinWidth/2; i <= WinWidth/2; i += 100) {
                gl.glVertex2f(-WinHeight, i);
                gl.glVertex2f(WinHeight, i);
            }
            gl.glEnd();
 
            // зеленая метка с координатами x, y
            gl.glColor3f( 0.0f, 1.0f, 0.0f );           
            gl.glPolygonMode( GL2.GL_FRONT, GL2.GL_FILL );
 
            // прорисовка меток 
            // проход по каналам
            for (int i = 0; i < NB_CNL; i++) {
                // проход по меткам в канале
                for (int j = 0; j < MT_CNL; j++)  {
                    // прорисовка если дальность меньше 2000    
                    if(y[i][j] < 2000) {
                        gl.glBegin( GL2.GL_POLYGON );  
                        gl.glVertex2i( x[i]+0, y[i][j]+5 );
                        gl.glVertex2i( x[i]+5, y[i][j]+5 );  
                        gl.glVertex2i( x[i]+5, y[i][j]+0 );   
                        gl.glVertex2i( x[i]+0, y[i][j]+0 );  
                        gl.glEnd();
                    }
                }
            }
            
            tr = new TextRenderer(new Font("Verdana", Font.BOLD, 16), true, false, null, false);
            tr.setColor(1f,1f,1f,1f);
            tr.beginRendering(0,0);
            tr.draw( "Hello World! ", 100, 100);
            tr.endRendering();
 
            gl.glFlush();
        }
 
        @Override
        public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height)
        {
            System.out.println("reshape() called: x = "+x+", y = "+y+", width = "+width+", height = "+height);
        }
        
    }    
}
В коде не работает вывод текста на графическую панель
Код:
tr = new TextRenderer(new Font("Verdana", Font.BOLD, 16), true, false, null, false);
            tr.setColor(1f,1f,1f,1f);
            tr.beginRendering(0,0);
            tr.draw( "Hello World! ", 100, 100);
            tr.endRendering();
Подскажите пожалуйста что в коде не так.
Verizon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать форму и её дочернюю форму и организовать вывод Делфи программирование Помощь студентам 0 21.09.2013 20:18
Подсоединить JOGL pufystyj Общие вопросы по Java, Java SE, Kotlin 3 30.05.2013 02:04
JOGL ArtiSoft Общие вопросы по Java, Java SE, Kotlin 0 17.05.2010 22:31
форматирование текста с помощью CFontDialog TiLKiSS Общие вопросы C/C++ 5 27.12.2008 21:48
Как перетаскивать всю форму с помощью объекта на форме. Bill Gates Общие вопросы Delphi 1 02.01.2008 20:42