*** empty log message ***

This commit is contained in:
Caspian Rychlik-Prince 2003-02-06 18:26:04 +00:00
parent 1f1d932687
commit 5ea14c3919
7 changed files with 445 additions and 294 deletions

View File

@ -80,14 +80,16 @@ public final class Display {
* already created then no action is taken - the display must first be
* destroyed.
*
* @param displayMode a display mode to choose
* @param fullscreen whether to create the display fullscreen
* @param displayMode A display mode to choose
* @param fullscreen Whether to create the display fullscreen
* @param title The title for the application
* @throws Exception if the display mode could not be set
* @see #destroy()
*/
public static void create(
DisplayMode displayMode,
boolean fullscreen)
boolean fullscreen,
String title)
throws Exception {
if (created)
@ -100,7 +102,8 @@ public final class Display {
displayMode.alpha,
displayMode.depth,
displayMode.stencil,
fullscreen))
fullscreen,
title))
throw new Exception("Failed to set display mode to " + displayMode);
created = true;
@ -121,7 +124,8 @@ public final class Display {
int alpha_bits,
int depth_bits,
int stencil_bits,
boolean fullscreen);
boolean fullscreen,
String title);
/**
* Destroy the display and return it to normal. If the display has not yet

View File

@ -98,7 +98,7 @@ public class ALCTest extends BasicTest {
alc.processContext(context);
//suspend
alc.suspendContext(context);
// alc.suspendContext(context);
//query
System.out.println("DEFAULT_DEVICE_SPECIFIER: " + alc.getString(device, ALC.DEFAULT_DEVICE_SPECIFIER));

View File

@ -92,7 +92,7 @@ public class MovingSoundTest extends BasicTest {
break;
}
}
Display.create(modes[mode], false);
Display.create(modes[mode], false, "MovingSoundTest");
} catch (Exception e) {
e.printStackTrace();
exit(-1);

View File

@ -63,7 +63,7 @@ public final class Game {
}
//select above found displaymode
Display.create(modes[mode], false);
Display.create(modes[mode], false, "LWJGL Game Example");
System.out.println("Created display.");
} catch (Exception e) {
System.err.println("Failed to create display due to " + e);
@ -73,7 +73,6 @@ public final class Game {
public static final GL gl = new GL();
public static final GLU glu = new GLU(gl);
static {
try {
gl.create();
@ -100,12 +99,9 @@ public final class Game {
try {
init();
while (!finished) {
Keyboard.poll();
// Keyboard.poll();
mainLoop();
render();
gl.swapBuffers();
}
} catch (Throwable t) {
@ -123,8 +119,22 @@ public final class Game {
if (angle > 360.0f)
angle = 0.0f;
if (Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {
Mouse.poll();
if (Mouse.dx != 0 || Mouse.dy != 0 || Mouse.dz != 0)
System.out.println("Mouse moved " + Mouse.dx + " " + Mouse.dy + " " + Mouse.dz);
for (int i = 0; i < 8; i++)
if (Mouse.isButtonDown(i))
System.out.println("Button " + i + " down");
/* Keyboard.poll();
if (Keyboard.isKeyDown(Keyboard.KEY_ESCAPE))
finished = true;*/
Keyboard.read();
for (int i = 0; i < Keyboard.getNumKeyboardEvents(); i++) {
Keyboard.next();
if (Keyboard.key == Keyboard.KEY_ESCAPE && Keyboard.state)
finished = true;
if (Keyboard.key == Keyboard.KEY_T && Keyboard.state)
System.out.println("Current time: " + Sys.getTime());
}
}
@ -137,12 +147,10 @@ public final class Game {
gl.translatef(Display.getWidth() / 2, Display.getHeight() / 2, 0.0f);
gl.rotatef(angle, 0, 0, 1.0f);
gl.begin(GL.QUADS);
{
gl.vertex2i(-50, -50);
gl.vertex2i(50, -50);
gl.vertex2i(50, 50);
gl.vertex2i(-50, 50);
}
gl.end();
gl.popMatrix();
}
@ -151,19 +159,12 @@ public final class Game {
* Initialize
*/
private static void init() throws Exception {
System.out.println("Press the ESCAPE key to exit");
Keyboard.create();
//reset time
Keyboard.enableBuffer();
Mouse.create();
Sys.setTime(0);
//set priority of this process
Sys.setProcessPriority(Sys.LOW_PRIORITY);
//print timer resolution info
System.out.println("Timer resolution: " + Sys.getTimerResolution() + " ticks per second");
Sys.setProcessPriority(Sys.HIGH_PRIORITY);
System.out.println("Timer resolution: " + Sys.getTimerResolution());
// Go into orthographic projection mode.
gl.matrixMode(GL.PROJECTION);
gl.loadIdentity();
@ -171,15 +172,13 @@ public final class Game {
gl.matrixMode(GL.MODELVIEW);
gl.loadIdentity();
gl.viewport(0, 0, Display.getWidth(), Display.getHeight());
//lets print out some info
ByteBuffer num_tex_units_buf = ByteBuffer.allocateDirect(4);
num_tex_units_buf.order(ByteOrder.nativeOrder());
int buf_addr = Sys.getDirectBufferAddress(num_tex_units_buf);
gl.getIntegerv(GL.MAX_TEXTURE_UNITS_ARB, buf_addr);
System.out.println(
"Number of texture units: " + num_tex_units_buf.getInt());
System.out.println("Number of texture units: " + num_tex_units_buf.getInt());
// Fix the refresh rate to the display frequency.
// gl.wglSwapIntervalEXT(1);
}
/**
@ -187,6 +186,7 @@ public final class Game {
*/
private static void cleanup() {
Keyboard.destroy();
Mouse.destroy();
gl.destroy();
Display.destroy();
}

View File

@ -50,15 +50,14 @@ import java.io.*;
import java.nio.*;
import java.util.*;
class Aslod {
public class Grass {
static class Aslod {
float angle;
float value;
float ripple;
float count;
}
public class Grass {
private static boolean finished = false;
private static Random rand = new Random();
@ -67,9 +66,9 @@ public class Grass {
int mode = -1;
DisplayMode[] modes = Display.getAvailableDisplayModes();
for (int i = 0; i < modes.length; i++) {
if( modes[i].width == 640 &&
modes[i].height == 480 &&
modes[i].bpp >= 16) {
if (modes[i].width == 640
&& modes[i].height == 480
&& modes[i].bpp >= 16) {
mode = i;
break;
}
@ -82,7 +81,7 @@ public class Grass {
}
// For now let's just pick a mode we're certain to have
Display.create(modes[mode], false);
Display.create(modes[mode], false, "Grass");
System.out.println("Created display.");
} catch (Exception e) {
e.printStackTrace();
@ -132,7 +131,6 @@ public class Grass {
return null;
}
public static void main(String[] args) {
ByteBuffer byte_buf = ByteBuffer.allocateDirect(4);
byte_buf.order(ByteOrder.nativeOrder());
@ -149,7 +147,11 @@ public class Grass {
program_buf.rewind();
program_buf.put(program);
program_buf.rewind();
gl.loadProgramNV(GL.VERTEX_PROGRAM_NV, program_handle, program_buf.remaining(), Sys.getDirectBufferAddress(program_buf));
gl.loadProgramNV(
GL.VERTEX_PROGRAM_NV,
program_handle,
program_buf.remaining(),
Sys.getDirectBufferAddress(program_buf));
/*gl.getIntegerv(GL.PROGRAM_ERROR_POSITION_NV, Sys.getDirectBufferAddress(int_buf));
System.out.println("error position: " + int_buf.get(0));*/
@ -163,10 +165,16 @@ public class Grass {
light_buf_f.rewind();
light_buf_f.put(LightDiffuse);
gl.lightfv(GL.LIGHT0, GL.DIFFUSE, Sys.getDirectBufferAddress(light_buf_f));
gl.lightfv(
GL.LIGHT0,
GL.DIFFUSE,
Sys.getDirectBufferAddress(light_buf_f));
light_buf_f.rewind();
light_buf_f.put(LightPosition);
gl.lightfv(GL.LIGHT0, GL.POSITION, Sys.getDirectBufferAddress(light_buf_f));
gl.lightfv(
GL.LIGHT0,
GL.POSITION,
Sys.getDirectBufferAddress(light_buf_f));
gl.enable(GL.LIGHT0);
gl.enable(GL.LIGHTING);
@ -214,7 +222,11 @@ public class Grass {
return rand.nextFloat();
}
private static void genGrass( float fFaceHeight, float fFaceWidth, float fX, float fZ ) {
private static void genGrass(
float fFaceHeight,
float fFaceWidth,
float fX,
float fZ) {
int cFaces;
int numFaces;
float cWidth;
@ -223,8 +235,16 @@ public class Grass {
float fRigid;
numFaces = 5;
frndHeight = fFaceHeight + ((fFaceHeight / 1.5f) * (float)java.lang.Math.cos(java.lang.Math.abs(rand.nextInt())));
frndWidth = fFaceWidth + ((fFaceWidth / 4.0f) * (float)java.lang.Math.cos(java.lang.Math.abs(rand.nextInt())));
frndHeight =
fFaceHeight
+ ((fFaceHeight / 1.5f)
* (float) java.lang.Math.cos(
java.lang.Math.abs(rand.nextInt())));
frndWidth =
fFaceWidth
+ ((fFaceWidth / 4.0f)
* (float) java.lang.Math.cos(
java.lang.Math.abs(rand.nextInt())));
fDecWidth = frndWidth / 5.0f;
fRotate = myrand() * 3.1415f;
fRigid = ((fRigid = myrand()) < 0.2f) ? 0.2f : fRigid;
@ -234,13 +254,19 @@ public class Grass {
else
gl.begin(GL.QUAD_STRIP);
for (cFaces = 0; cFaces < numFaces; cFaces++)
{
for (cWidth = frndWidth; cWidth >=-frndWidth; cWidth-=(frndWidth * 2.0f))
{
for (cFaces = 0; cFaces < numFaces; cFaces++) {
for (cWidth = frndWidth;
cWidth >= -frndWidth;
cWidth -= (frndWidth * 2.0f)) {
gl.color4f(fX, fRigid, fZ, (float) cFaces / (float) numFaces);
gl.vertex3f((float)(((cFaces-2)*0.1f)*java.lang.Math.cos(fRotate)+(cWidth)*java.lang.Math.sin(fRotate)), cFaces*frndHeight,
-(float)(((cFaces-2)*0.1f)*java.lang.Math.sin(fRotate) + (cWidth)*java.lang.Math.cos(fRotate)));
gl.vertex3f(
(float) (((cFaces - 2) * 0.1f)
* java.lang.Math.cos(fRotate)
+ (cWidth) * java.lang.Math.sin(fRotate)),
cFaces * frndHeight,
- (float)
(((cFaces - 2) * 0.1f) * java.lang.Math.sin(fRotate)
+ (cWidth) * java.lang.Math.cos(fRotate)));
}
frndWidth -= fDecWidth;
}
@ -254,10 +280,8 @@ public class Grass {
fArea = 20.0f;
mesh = gl.genLists(1);
gl.newList(mesh, GL.COMPILE);
for (cI = -fArea/2; cI < fArea/2; cI+=0.25f)
{
for (cJ = -fArea/2; cJ < fArea/2; cJ+=0.25f)
{
for (cI = -fArea / 2; cI < fArea / 2; cI += 0.25f) {
for (cJ = -fArea / 2; cJ < fArea / 2; cJ += 0.25f) {
genGrass(0.5f, 0.1f, cI, cJ);
}
}
@ -265,35 +289,154 @@ public class Grass {
}
private static void grsDraw()
{
private static void grsDraw() {
gl.enable(GL.VERTEX_PROGRAM_NV);
gl.bindProgramNV(GL.VERTEX_PROGRAM_NV, program_handle);
gl.trackMatrixNV(GL.VERTEX_PROGRAM_NV, 0, GL.MODELVIEW_PROJECTION_NV, GL.IDENTITY_NV);
gl.trackMatrixNV(
GL.VERTEX_PROGRAM_NV,
0,
GL.MODELVIEW_PROJECTION_NV,
GL.IDENTITY_NV);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 4, 0.0f, 0.0f, 0.0f, 0.0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 5, 0.0f, 0.0f, 0.0f, 0.0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 6, 1.763609f, 0.496495f, 0.0f, 0.0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 7, -0.943599f, 3.203737f, 0.0f, 0.0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 8, 4.101107f, 0.943413f, 0.0f, 0.0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 9, -1.218603f, 6.259399f, 0.0f, 0.0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 10, 7.214299f, 1.352961f, 0.0f, 0.0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 11, -1.540748f, 10.080958f, 0.0f, 0.0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 12, 10.880035f, 1.759046f, 0.0f, 0.0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 13, -1.852705f, 14.468674f, 0.0f, 0.0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 14, 14.292879f, 1.973329f, 0.0f, 0.0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 15, -1.973387f, 18.506531f, 0.0f, 0.0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 16, (float)(java.lang.Math.sin(aslod.angle) * (aslod.value + aslod.ripple)), 0.0f, (float)(java.lang.Math.cos(aslod.angle) * (aslod.value + aslod.ripple)), 0.0f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
4,
0.0f,
0.0f,
0.0f,
0.0f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
5,
0.0f,
0.0f,
0.0f,
0.0f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
6,
1.763609f,
0.496495f,
0.0f,
0.0f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
7,
-0.943599f,
3.203737f,
0.0f,
0.0f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
8,
4.101107f,
0.943413f,
0.0f,
0.0f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
9,
-1.218603f,
6.259399f,
0.0f,
0.0f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
10,
7.214299f,
1.352961f,
0.0f,
0.0f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
11,
-1.540748f,
10.080958f,
0.0f,
0.0f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
12,
10.880035f,
1.759046f,
0.0f,
0.0f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
13,
-1.852705f,
14.468674f,
0.0f,
0.0f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
14,
14.292879f,
1.973329f,
0.0f,
0.0f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
15,
-1.973387f,
18.506531f,
0.0f,
0.0f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
16,
(float) (java.lang.Math.sin(aslod.angle)
* (aslod.value + aslod.ripple)),
0.0f,
(float) (java.lang.Math.cos(aslod.angle)
* (aslod.value + aslod.ripple)),
0.0f);
gl.programParameter4fNV(GL.VERTEX_PROGRAM_NV, 17, 1.7f, 5f, 2f, 0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 18, -0.0187293f, 0.074261f, 0.2121144f, 1.570729f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
18,
-0.0187293f,
0.074261f,
0.2121144f,
1.570729f);
gl.programParameter4fNV(GL.VERTEX_PROGRAM_NV, 20, 0f, 0.5f, 1f, 0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 21, 0.25f, -9f, 0.75f, 0.1591549f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 22, 24.9808f, -24.9808f, -60.14581f, 60.14581f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 23, 85.45379f, -85.45379f, -64.93935f, 64.93935f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 24, 19.73921f, -19.73921f, -1f, 1f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
21,
0.25f,
-9f,
0.75f,
0.1591549f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
22,
24.9808f,
-24.9808f,
-60.14581f,
60.14581f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
23,
85.45379f,
-85.45379f,
-64.93935f,
64.93935f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
24,
19.73921f,
-19.73921f,
-1f,
1f);
gl.programParameter4fNV(GL.VERTEX_PROGRAM_NV, 25, 0f, 4f, 0f, 0f);
gl.programParameter4fNV( GL.VERTEX_PROGRAM_NV, 19, 1f, 3.141593f, 0.5f, 1f);
gl.programParameter4fNV(
GL.VERTEX_PROGRAM_NV,
19,
1f,
3.141593f,
0.5f,
1f);
gl.programParameter4fNV(GL.VERTEX_PROGRAM_NV, 26, 0.7f, 0.4f, 0f, 0f);
gl.callList(mesh);
gl.disable(GL.VERTEX_PROGRAM_NV);
@ -321,8 +464,7 @@ public class Grass {
}
*/
private static void ptrAnimate(float degree)
{
private static void ptrAnimate(float degree) {
aslod.count += degree;
aslod.ripple = (float) (java.lang.Math.cos(aslod.count) / 80.0);
@ -334,8 +476,7 @@ public class Grass {
Keyboard.next();
if (!Keyboard.state)
continue;
switch(Keyboard.key)
{
switch (Keyboard.key) {
case Keyboard.KEY_A :
aslod.angle += 0.1;
break;
@ -356,4 +497,3 @@ public class Grass {
}
}

View File

@ -26,7 +26,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_lwjgl_Display_getAvailableDisplayModes
* Signature: (IIIIZ)Z
*/
JNIEXPORT jboolean JNICALL Java_org_lwjgl_Display_nCreate
(JNIEnv *, jclass, jint, jint, jint, jint, jint, jint, jint, jboolean);
(JNIEnv *, jclass, jint, jint, jint, jint, jint, jint, jint, jboolean, jstring);
/*
* Class: org_lwjgl_Display

View File

@ -112,6 +112,7 @@ LRESULT CALLBACK WindowProc(HWND hWnd,
WPARAM wParam,
LPARAM lParam)
{
switch (msg) {
// disable screen saver and monitor power down messages which wreak havoc
case WM_SYSCOMMAND:
@ -119,14 +120,12 @@ LRESULT CALLBACK WindowProc(HWND hWnd,
switch (wParam) {
case SC_SCREENSAVE:
case SC_MONITORPOWER:
return 0;
return 0L;
break;
default:
break;
}
}
case WM_PAINT:
return 0;
}
// default action
@ -235,7 +234,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_lwjgl_Display_getAvailableDisplayModes
*/
JNIEXPORT jboolean JNICALL Java_org_lwjgl_Display_nCreate
(JNIEnv * env, jclass clazz, jint width, jint height, jint bpp, jint freq,
jint alphaBits, jint depthBits, jint stencilBits, jboolean fullscreen)
jint alphaBits, jint depthBits, jint stencilBits, jboolean fullscreen, jstring title)
{
#ifdef _DEBUG
printf("Creating display: size %dx%d %dhz %dbpp...\n", width, height, freq, bpp);
@ -269,29 +268,37 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_Display_nCreate
oneShotInitialised = true;
}
int windowflags;
int exstyle, windowflags;
if (fullscreen) {
windowflags = WS_POPUP;
exstyle = WS_EX_TOPMOST;
windowflags = WS_POPUP | WS_VISIBLE;
} else {
windowflags = WS_POPUP | WS_CAPTION;
exstyle = 0;
windowflags = WS_OVERLAPPED | WS_BORDER | WS_CAPTION | WS_VISIBLE;
}
const char* titleString = env->GetStringUTFChars(title, NULL);
// Create the window now, using that class:
hwnd = CreateWindow(
hwnd = CreateWindowEx (
exstyle,
WINDOWCLASSNAME,
"LWJGL",
titleString,
windowflags,
0, 0,
width, height,
0, 0, width, height,
NULL,
NULL,
dll_handle,
NULL);
env->ReleaseStringUTFChars(title, titleString);
// And we never look at windowClass again...
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
SetForegroundWindow(hwnd);
SetFocus(hwnd);
hdc = GetWindowDC(hwnd);