所以我一直在盯着這個代碼看起來像一個半年。當談到lwjgl時,我是一個新手,但我已經運行了一些代碼。問題是我想要一個立方體,而且它真的很奇怪。從技術上講,目標只是能夠渲染隨機數量的立方體,但由於我遇到的錯誤,我已將其縮減爲只有一個。lwjgl生成3D立方體給出奇怪的形狀
我已經看過VBO,但是我的小組的其餘成員都使用GL11-GL13,並且看到這是最後一部分,我們希望堅持使用它。
總而言之,我試圖渲染當前的多維數據集,但後來我可以使用當前的設置添加任意數量的多維數據集。任何幫助都會很棒。我研究過改變x,y和z。
非常感謝大家的幫助!希望這是主題。
package citygeneratorv0;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL11.*;
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_MODELVIEW;
import static org.lwjgl.opengl.GL11.GL_PROJECTION;
import static org.lwjgl.opengl.GL11.glBegin;
import static org.lwjgl.opengl.GL11.glClear;
import static org.lwjgl.opengl.GL11.glColor3f;
import static org.lwjgl.opengl.GL11.glEnd;
import static org.lwjgl.opengl.GL11.glMatrixMode;
import static org.lwjgl.opengl.GL11.glOrtho;
import static org.lwjgl.opengl.GL11.glVertex3f;
public class CityGeneratorV0 {
private static final List<Box> city = new ArrayList<>(16);
static void generateCity(int numBuildings) {
city.add(new Box());
}
}
public static void main(String args[]) {
try {
Display.setDisplayMode(new DisplayMode(640, 480));
Display.setTitle("Input Demo");
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
Display.destroy();
System.exit(1);
}
int numBuildings = 1;
generateCity(numBuildings);
glMatrixMode(GL_PROJECTION);
glOrtho(0, 640, 480, 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
while (!Display.isCloseRequested()) {
glClear(GL_COLOR_BUFFER_BIT);
while (Keyboard.next()) {
if (Keyboard.getEventKey() == Keyboard.KEY_C && Keyboard.getEventKeyState()) {
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {
Display.destroy();
System.exit(0);
}
for (final Box box : city) {
box.draw();
}
Display.update();
Display.sync(5000);
}
System.out.print(city.size());
Display.destroy();
}
private static class Box {
private float rquad;
Boolean draw() {
GL11.glLoadIdentity(); // Reset The Current Modelview Matrix
GL11.glTranslatef(1.5f, 0.0f, -7.0f); // Move Right 1.5 Units And Into The Screen 6.0
GL11.glRotatef(rquad, 1.0f, 0.0f, 0.0f); // Rotate The Quad On The X axis (NEW)
glColor3f(0.5f, 0.5f, 1.0f); // Set The Color To Blue One Time Only
glBegin(GL11.GL_QUADS); // Draw A Quad
{
glColor3f(0.0f, 1.0f, 0.0f); // Set The Color To Green
glVertex3f(400, 200, -100); // Top Right Of The Quad (Top)
glVertex3f(300, 200, -100); // Top Left Of The Quad (Top)
glVertex3f(300, 200, -50); // Bottom Left Of The Quad (Top)
glVertex3f(400, 200, -50); // Bottom Right Of The Quad (Top)
glColor3f(1.0f, 0.5f, 0.0f); // Set The Color To Orange
glVertex3f(400, 100, -50); // Top Right Of The Quad (Bottom)
glVertex3f(300, 100, -50); // Top Left Of The Quad (Bottom)
glVertex3f(300, 100, -100); // Bottom Left Of The Quad (Bottom)
glVertex3f(400, 100, -100); // Bottom Right Of The Quad (Bottom)
glColor3f(1.0f, 0.0f, 0.0f); // Set The Color To Red
glVertex3f(400, 200, -50); // Top Right Of The Quad (Front)
glVertex3f(300, 200, -50); // Top Left Of The Quad (Front)
glVertex3f(300, 100, -50); // Bottom Left Of The Quad (Front)
glVertex3f(400, 100, -50); // Bottom Right Of The Quad (Front)
glColor3f(1.0f, 1.0f, 0.0f); // Set The Color To Yellow
glVertex3f(400, 100, -100); // Bottom Left Of The Quad (Back)
glVertex3f(300, 100, -100); // Bottom Right Of The Quad (Back)
glVertex3f(300, 200, -100); // Top Right Of The Quad (Back)
glVertex3f(400, 200, -100); // Top Left Of The Quad (Back)
glColor3f(0.0f, 0.0f, 1.0f); // Set The Color To Blue
glVertex3f(300, 200, -50); // Top Right Of The Quad (Left)
glVertex3f(300, 200, -100); // Top Left Of The Quad (Left)
glVertex3f(300, 100, -100); // Bottom Left Of The Quad (Left)
glVertex3f(300, 100, -50); // Bottom Right Of The Quad (Left)
glColor3f(1.0f, 0.0f, 1.0f); // Set The Color To Violet
glVertex3f(400, 200, -100); // Top Right Of The Quad (Right)
glVertex3f(400, 200, -50); // Top Left Of The Quad (Right)
glVertex3f(400, 100, -50); // Bottom Left Of The Quad (Right)
glVertex3f(400, 100, -100); // Bottom Right Of The Quad (Right)
}
glEnd(); // Done Drawing The Quad
rquad -= 0.15f;
return true;
}
}
}
不應該是glOrtho(0,640,0,480,1,-1); – Dawnkeeper