JOGL 颜色设置
精华
小牛编辑
132浏览
2023-03-14
在 JOGL 中,可以用不同类型的颜色填充图形。着色只是增强了人物的外观和感觉。
JOGL 使用 GL2 接口的 glColor3f() 方法来指定颜色的类型。此方法遵循 RGB(红、绿、蓝)颜色模型。在此模型中,每种颜色都用 0 到 1 之间的值表示,其中 0 表示没有该颜色,1 表示该颜色的最大值。
注意 :需要将所有三种颜色的值作为 glColor3f() 方法的参数传递。
JOGL 颜色代码列表
以下是一些常用颜色的代码列表:
颜色 | 红 | 绿 | 蓝 |
---|---|---|---|
红色 | 1 | 0 | 0 |
绿色 | 0 | 1 | 0 |
蓝色 | 1 | 1 | 0 |
黄色 | 1 | 1 | 0 |
橙色 | 1 | 0.5 | 0 |
紫色 | 1 | 0 | 1 |
青色 | 0 | 1 | 1 |
JOGL 单色示例
这是一个简单的例子,三角形只用一种(绿色)颜色填充。
package cn.xnip;
import javax.media.opengl.*;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.*;
public class JColor implements GLEventListener {
@Override
public void init(GLAutoDrawable arg0) {
}
@Override
public void display(GLAutoDrawable drawable) {
final GL2 gl = drawable.getGL().getGL2();
gl.glBegin(GL2.GL_TRIANGLES);
//Green Color
gl.glColor3f(0.0f, 1.0f, 0.0f);
gl.glVertex2d(0, 0.5);
gl.glVertex2d(-0.5, -0.5);
gl.glVertex2d(0.5, -0.5);
gl.glEnd();
}
@Override
public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4) {
}
@Override
public void dispose(GLAutoDrawable arg0) {
}
public static void main(String[] args) {
final GLProfile gp = GLProfile.get(GLProfile.GL2);
GLCapabilities cap = new GLCapabilities(gp);
final GLCanvas gc = new GLCanvas(cap);
JColor jc = new JColor();
gc.addGLEventListener(jc);
gc.setSize(400, 400);
final JFrame frame = new JFrame("xnip.cn:JOGL Coloring");
frame.add(gc);
frame.setSize(500, 400);
frame.setVisible(true);
}
}
输出结果如下:
JOGL 混合着色 示例
在这个例子中,一个三角形用三种不同的颜色填充。
package cn.xnip;
import javax.media.opengl.*;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.*;
public class JMColor implements GLEventListener {
@Override
public void init(GLAutoDrawable arg0) {
}
@Override
public void display(GLAutoDrawable drawable) {
final GL2 gl = drawable.getGL().getGL2();
gl.glBegin(GL2.GL_TRIANGLES);
//Yellow Color
gl.glColor3f(1.0f, 1.0f, 0f);
gl.glVertex2d(0, 0.5);
//Red Color
gl.glColor3f(1f, 0f, 0f);
gl.glVertex2d(-0.5, -0.5);
//Blue Color
gl.glColor3f(0f, 0f, 1f);
gl.glVertex2d(0.5, -0.5);
gl.glEnd();
}
@Override
public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4) {
}
@Override
public void dispose(GLAutoDrawable arg0) {
}
public static void main(String[] args) {
final GLProfile gp = GLProfile.get(GLProfile.GL2);
GLCapabilities cap = new GLCapabilities(gp);
final GLCanvas gc = new GLCanvas(cap);
JMColor jc = new JMColor();
gc.addGLEventListener(jc);
gc.setSize(400, 400);
final JFrame frame = new JFrame("xnip.cn:JOGL Mixed Coloring");
frame.add(gc);
frame.setSize(500, 400);
frame.setVisible(true);
}
}
输出结果如下: