В этой главе вы узнаете, как применять цвета к объектам с помощью JOGL. Чтобы применить цвет к объекту, используйте метод glColor () из GL2 . Ниже приведен синтаксис использования метода glColor.
Синтаксис
gl.glColorXY(1f,0f,0f);
где,
-
Х обозначает количество используемых цветов: 3 (красный, зеленый, синий) или 4 (красный, зеленый, синий, альфа). Чтобы получить различные цветовые комбинации, значения этих цветов передаются в качестве параметров. Последовательность параметров цвета должна поддерживаться в этом порядке.
пример
Если вы передадите значения цвета как (1, 0, 0), то вы получите красный цвет. Точно так же (1, 1, 0) дает вам желтый цвет.
-
Y обозначает тип данных, который принимает такие параметры, как byte (b), double (d), float (f), int (i), short (s), ubyte (ub), uint (ui) и ushort (us). ,
Х обозначает количество используемых цветов: 3 (красный, зеленый, синий) или 4 (красный, зеленый, синий, альфа). Чтобы получить различные цветовые комбинации, значения этих цветов передаются в качестве параметров. Последовательность параметров цвета должна поддерживаться в этом порядке.
пример
Если вы передадите значения цвета как (1, 0, 0), то вы получите красный цвет. Точно так же (1, 1, 0) дает вам желтый цвет.
Y обозначает тип данных, который принимает такие параметры, как byte (b), double (d), float (f), int (i), short (s), ubyte (ub), uint (ui) и ushort (us). ,
gl.glColor3f(1f,0f,0f); //gives us red gl.glColor3f(0f,1f,0f); //gives us green gl.glColor3f(0f,0f,1f); //gives us blue
В случае треугольника вы можете применять разные цвета для каждой вершины.
Давайте пройдемся по программе, чтобы применить цвета к треугольнику —
import javax.media.opengl.GL2; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLCapabilities; import javax.media.opengl.GLEventListener; import javax.media.opengl.GLProfile; import javax.media.opengl.awt.GLCanvas; import javax.swing.JFrame; public class TriangleColor implements GLEventListener { @Override public void display( GLAutoDrawable drawable ) { final GL2 gl = drawable.getGL().getGL2(); gl.glBegin( GL2.GL_TRIANGLES ); // Drawing Using Triangles gl.glColor3f( 1.0f, 0.0f, 0.0f ); // Red gl.glVertex3f( 0.5f,0.7f,0.0f ); // Top gl.glColor3f( 0.0f,1.0f,0.0f ); // green gl.glVertex3f( -0.2f,-0.50f,0.0f ); // Bottom Left gl.glColor3f( 0.0f,0.0f,1.0f ); // blue gl.glVertex3f( 0.5f,-0.5f,0.0f ); // Bottom Right gl.glEnd(); } @Override public void dispose( GLAutoDrawable arg0 ) { //method body } @Override public void init( GLAutoDrawable arg0 ) { // method body } @Override public void reshape( GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4 ) { // method body } public static void main( String[] args ) { //getting the capabilities object of GL2 profile final GLProfile profile = GLProfile.get( GLProfile.GL2 ); GLCapabilities capabilities = new GLCapabilities(profile); // The canvas final GLCanvas glcanvas = new GLCanvas( capabilities ); TriangleColor triangle = new TriangleColor(); glcanvas.addGLEventListener( triangle ); glcanvas.setSize( 400, 400 ); //creating frame final JFrame frame = new JFrame (" Colored Triangle"); //adding canvas to it frame.getContentPane().add( glcanvas ); frame.setSize( frame.getContentPane().getPreferredSize()); frame.setVisible( true ); } //end of main } //end of class
Когда вы компилируете и запускаете вышеуказанную программу, вы получаете следующий цветной треугольник —
Применение цвета к многоугольнику
Давайте пройдемся по программе, чтобы применить цвета к многоугольнику —
import javax.media.opengl.GL2; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLCapabilities; import javax.media.opengl.GLEventListener; import javax.media.opengl.GLProfile; import javax.media.opengl.awt.GLCanvas; import javax.swing.JFrame; public class PolygonColor implements GLEventListener { @Override public void display( GLAutoDrawable drawable ) { final GL2 gl = drawable.getGL().getGL2(); gl.glColor3f( 1f,0f,0f ); //applying red gl.glBegin( GL2.GL_POLYGON ); gl.glVertex3f( 0f,0.5f,0f ); gl.glVertex3f( -0.5f,0.2f,0f ); gl.glVertex3f( -0.5f,-0.2f,0f ); gl.glVertex3f( 0f,-0.5f,0f ); gl.glVertex3f( 0f,0.5f,0f ); gl.glVertex3f( 0.5f,0.2f,0f ); gl.glVertex3f( 0.5f,-0.2f,0f ); gl.glVertex3f( 0f,-0.5f,0f ); gl.glEnd(); } @Override public void dispose( GLAutoDrawable arg0 ) { //method body } @Override public void init( GLAutoDrawable arg0 ) { // method body } @Override public void reshape( GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4 ) { // method body } public static void main( String[] args ) { //getting the capabilities object of GL2 profile final GLProfile profile = GLProfile.get( GLProfile.GL2 ); GLCapabilities capabilities = new GLCapabilities(profile); // The canvas final GLCanvas glcanvas = new GLCanvas( capabilities ); PolygonColor polygon = new PolygonColor(); glcanvas.addGLEventListener( polygon ); glcanvas.setSize( 400, 400 ); //creating frame final JFrame frame = new JFrame ( "Colored Polygon" ); //adding canvas to frame frame.getContentPane().add( glcanvas ); frame.setSize(frame.getContentPane().getPreferredSize() ); frame.setVisible( true ); } //end of main } //end of class
Когда вы компилируете и запускаете вышеуказанную программу, вы получаете следующий цветной полигон —