Author: ienze (posted 2012-10-13 22:41:51, viewed 136 times)
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
public class AileDisplay {
private static float[] lightPosition = {0f, 2f, 0f, 1f};
private static ScenesManager sceneManager = new ScenesManager();
public void init() {
sceneManager.setScene("res/scenes/scene1");
setUpDisplay();
sceneManager.getScene().generateDisplayLists();
sceneManager.getScene().loadCam();
setUpLighting();
while (!Display.isCloseRequested()) {
render();
checkInput();
Display.update();
Display.sync(60);
}
cleanUp();
System.exit(0);
}
private static void checkInput() {
sceneManager.getScene().cam.processMouse(1, 80, -80);
sceneManager.getScene().cam.processKeyboard(16, 1, 1, 1);
GL11.glLight(GL11.GL_LIGHT0, GL11.GL_POSITION, BufferTools.asFlippedFloatBuffer(lightPosition));
if (Mouse.isButtonDown(0))
Mouse.setGrabbed(true);
else if (Mouse.isButtonDown(1))
Mouse.setGrabbed(false);
}
private static void cleanUp() {
for(Model m : sceneManager.getScene().models) {
GL11.glDeleteLists(m.displayList, 1);
}
Display.destroy();
}
private static void render() {
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
GL11.glLoadIdentity();
sceneManager.getScene().cam.applyTranslations();
for(Model m : sceneManager.getScene().models) {
GL11.glCallList(m.displayList);
}
}
private static void setUpLighting() {
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_LIGHT0);
GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, BufferTools.asFlippedFloatBuffer(new float[]{0.3f,
0.3f, 0.3f, 1.0f}));
GL11.glLight(GL11.GL_LIGHT0, GL11.GL_POSITION,
BufferTools.asFlippedFloatBuffer(new float[]{0, 0, 0, 1}));
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glCullFace(GL11.GL_BACK);
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
GL11.glColorMaterial(GL11.GL_FRONT, GL11.GL_DIFFUSE);
}
private static void setUpDisplay() {
try {
Display.setDisplayMode(new DisplayMode(800, 600));
Display.setVSyncEnabled(true);
Display.setTitle("Happy tester!");
Display.create();
} catch (LWJGLException e) {
System.err.println("The display wasn't initialized correctly. :(");
Display.destroy();
System.exit(1);
}
}
}
public static int createDisplayList(Model m) {
int displayList = glGenLists(1);
glNewList(displayList, GL_COMPILE);
{
glMaterialf(GL_FRONT, GL_SHININESS, 128.0f);
glBegin(GL_TRIANGLES);
String currentMaterial = null;
for (Face face : m.faces) {
if(face.material != null) {
if(currentMaterial != face.material) {
FloatColor col = m.materials.get(face.material);
GL11.glColor3f(col.r, col.g, col.b);
currentMaterial = face.material;
}
} else {
GL11.glColor3f(0.4f, 0.4f, 0.4f);
currentMaterial = null;
}
Vector3f v1 = m.vertices.get((int) face.vertex.x - 1);
glVertex3f(v1.x, v1.y, v1.z);
Vector3f v2 = m.vertices.get((int) face.vertex.y - 1);
glVertex3f(v2.x, v2.y, v2.z);
Vector3f v3 = m.vertices.get((int) face.vertex.z - 1);
glVertex3f(v3.x, v3.y, v3.z);
}
glEnd();
}
glEndList();
return displayList;
} |
Special syntax:
- To highlight a line (yellow background), prefix it with '@@'
- To indicate that a line should be removed (red background), prefix it with '-'
- To indicate that a line should be added (green background), prefix it with '+'
- To post multiple snippets, seperate them by '~~~~'
|
Add your game by posting it in the WIP section,
or publish it in Showcase.
The first screenshot will be displayed as a thumbnail.
|
|