gpt4 book ai didi

java - OpenGL - 用点画线

转载 作者:行者123 更新时间:2023-11-29 06:02:16 24 4
gpt4 key购买 nike

我的练习如下:在 display() 中添加一个方法 drawLine。可能,你需要类似的东西drawLine(GL gl, int x1, int y1, int x2, int y2)现在使用直线方程,在 JOGL 中绘制构成从 x1,y1 到 x2,y2 的直线的各个点使用(例如)gl.glPointSize(1.0f); gl.glBegin(GL.GL_POINTS);如果您已将点涂成白色,并使用以下投影

gl.glViewport(-250, -150, 250, 150);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluOrtho2D(-250.0, 250.0, -150.0, 150.0);

然后用从点 (0,0) 到 (100,100) 的线的值,你的看起来类似于下图:

enter image description here

到目前为止,我创建行的 EventListener 代码如下:

import javax.media.opengl.*;
import javax.media.opengl.glu.GLU;


public class ThirdGLEventListener implements GLEventListener {

/**
* Interface to the GLU library.
*/
private GLU glu;

/**
* Take care of initialization here.
*/
public void init(GLAutoDrawable gld) {
GL gl = gld.getGL();
glu = new GLU();

gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);


gl.glViewport(-250, -150, 250, 150);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluOrtho2D(-250.0, 250.0, -150.0, 150.0);
}

/**
* Take care of drawing here.
*/
public void display(GLAutoDrawable drawable) {



GL gl = drawable.getGL();

gl.glClear(GL.GL_COLOR_BUFFER_BIT);

/*
* put your code here
*/

drawLine(gl, 0, 0, 100, 100);

}

public void reshape(GLAutoDrawable drawable, int x, int y, int width,
int height) {
}

public void displayChanged(GLAutoDrawable drawable,
boolean modeChanged, boolean deviceChanged) {
}

private void drawLine(GL gl, int x1, int y1, int x2, int y2) {
gl.glPointSize(1.0f);
gl.glBegin(GL.GL_POINTS);

// This is where the whole problem lies.

gl.glEnd();//end drawing of points

}

我的问题是我不太清楚如何完成直线方程方法中的代码。如果你能帮我解决这个问题,我将不胜感激。我觉得剩下的就对了,我只需要找到如何在 drawLine() 方法内部实现线方程。

最佳答案

这就是您在 OpenGL 中的做法。

glBegin(GL_POINTS);
for(float i = 0; i <= 100; ){
glVertex2f(i,i);
i+=0.01;
}
glEnd();

此外,建议您希望在 GL_PROJECTION 矩阵和模型 View 中进行正交投影,如 GL_MODELVIEW 中的上述代码

编辑你的+=0.01,你会得到更好的结果

glBegin(GL_LINES);
glVertex2i(0,0);
glVertex2i(100,100);
glEnd();

关于java - OpenGL - 用点画线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9691670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com