Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - MichaelJPCT

Pages: 1 2 3 [4]
Support / Near plane clipping (was: techniques for displaying text)
« on: January 03, 2016, 02:12:42 pm »
i am trying to do multipass rendering of a single world, dividing a world into near/middle/far parts. render far parts before rendering near parts,  like this:

world.setClippingPlanes(250.0 , 20000.0); world.renderScene(framebuffer); world.draw(framebuffer); framebuffer.clearZBufferOnly(); world.setClippingPlanes(5.0 , 250.0); world.renderScene(framebuffer); world.draw(framebuffer); framebuffer.clearZBufferOnly();
world.setClippingPlanes(0.1 , 5.0); world.renderScene(framebuffer); world.draw(framebuffer)

but the end result is not what i expect. is my method wrong? how can i achieve the multipass effect i described?

Support / naming the vertex attributes
« on: January 03, 2016, 10:29:06 am »
say i created a plane with ExtendedPrimitives.createPlane,
in the object3d there is a mesh, and the mesh has vertex positions, uv coords, etc.
they are like vertex attributes, but they are not in VertexAttribute objects.

if i want to use shader with this plane and i need to access vertex position, normal, uv coords... how can i access them?

Support / can i change min max fov?
« on: January 02, 2016, 02:08:59 pm »
i get 0.5 and 1.5 for minfov and maxfov, those are about 30 and 75 degree in horizontal direction. but i want larger range.

Bugs / cant use softward n hardware renderer on the same framebuffer
« on: January 01, 2016, 02:47:09 pm »
javadoc says "It is possible to use the software renderer as well as the OpenGL renderer on a single framebuffer at the same time"

i tried this:

buffer.disableRenderer(2); buffer.enableRenderer(1)
buffer.disableRenderer(1); buffer.enableRenderer(2)

then "array index out of bound exception" was reported at buffer.clear().

i was trying to use software renderer to render a large model with per-pixel fog, since my GPU can't do per-pixel fog.

Feedback / new way to develop with JPCT - Jython
« on: December 30, 2015, 03:13:01 pm »
i am more familiar with Python than with Java and after writing some java code i still think Python code is much faster to write, although Python runs much slower than Java. and for a beginner, the oppotunity to type in functions or change states when the program is running, then see the effects immediately (this is so called "interactive mode", as oppose to modify code -> compile -> test run) is a great help.
Jython is Python which runs on Java Virtual Machine, and it is possibly compatible with any Java libraries, so a JPCT game could be written mostly in Python code, although some parts should be written in Java or even C language to keep a high running performance.

now let's see how a JPCT program can be written with Jython.

to start up the program, create a shortcut such as start.bat.
-i means interactive mode, pause to let yourself read any error messages.
Code: [Select]
@c:\jythonpath\jython.exe -Djava.library.path=jar_path -i

minimal example of a JPCT program, save as
Code: [Select]
import sys,time; sys.path+=['jar_path','jar_path/jpct.jar','jar_path/lwjgl.jar','jar_path/lwjgl_util.jar']
from com.threed.jpct import *; from com.threed.jpct.util import *; from org.lwjgl.opengl import Display

timeToSleep=0.01 # 0.01 second

def sleepSomeTime(): time.sleep(timeToSleep) # or calculate a value to make framerate constant

def GameLogic(): return
def pollKeyboard(): return

def mainLoop():
    global running
    while running:
        GameLogic(); fb.clear(); fb.update(); sleepSomeTime(); fb.display(); pollKeyboard()
        # if some key event: running=0
        if Display.isCloseRequested(): Display.destroy(); break

if "some key event" happens and interactive mode is used, mainLoop stops and you can type in commands, such as change timeToSleep to 0.02, then call mainLoop again after changing running back to 1. this is an example of the benefit of interactive mode.

to import your own java class, put class files in jar_path or append another path to sys.path, then import YourJavaClass

if you know both Python language and Java, you may find this approach has some advantages.

Support / techniques for displaying text
« on: December 28, 2015, 03:38:19 pm »
right now i am looking into text rendering. after some research i found several ways to put text onto screen:
1) texture blitting as the way jpct examples do
2) billboard object3D placed in front of camera
3) using overlay class of jpct
4) make rectangles to hold texture of each character and render these rectangles with ortho projection and depth-test off

i would like to know whether blitting is the fastest method (runtime performance) and whether the 4th method can be done in jpct - i need to manipulate opengl states manually such as calling glDisable, glMatrixMode at a specific time in the rendering process.

i like to write something like:
Code: [Select]
import org.lwjgl.opengl;
class { method() { opengl.Display.setTitle("abc"); } }
but no matter what i tried:
import org.lwjgl;
import org.lwjgl.opengl.*
jave doens't compile.
do i have to write { org.lwjgl.opengl.Display.method(); } every time?

Support / non standard window size and OPENGL renderer?
« on: December 26, 2015, 04:02:52 pm »
hello i just started to try jpct the desktop version. so far i created a non fullscreen window with non standard size , but can't get OPENGL hardward renderer.
another problem is, if i set the window size to a standard size, the OPENGL renderer opens another window that i don't want.
how to setup the window correctly?

my current code is like this:

GraphicsEnvironment e=GraphicsEnvironment.getLocalGraphicsEnvironment();
gDevice=e.getDefaultScreenDevice(); GraphicsConfiguration gc=gDevice.getDefaultConfiguration();
gwin=new Frame(gc); gwin.setUndecorated(true); gwin.setIgnoreRepaint(true); gwin.setResizable(false);
gwin.pack(); Dimension d=new Dimension(1280,766); gwin.setSize(d);
gwin.setVisible(true); gfx=gwin.getGraphics();
gbuf=new FrameBuffer(1280,766,FrameBuffer.SAMPLINGMODE_NORMAL);
gbuf.enableRenderer(IRenderer.RENDERER_OPENGL); gbuf.optimizeBufferAccess();

and in the mainloop:
gbuf.clear(); gbuf.update(); gbuf.display(gfx);

note that i want the window to have no border/title, and sized 1280x766 (766=800-34, the height of taskbar)
in my experience at other 3D engine, non standard window size is achievable.
i am new to java and jpct, so can't find out what's wrong in my code. could someone help me? thanks.

Support / for AIDE, where to put the downloaded files?
« on: April 04, 2013, 05:46:46 pm »
hello. i'm new to java and android.
i'm trying to do some development on android device and AIDE seems good enough for me.
but the wiki of jpct only taught how to install for eclipse. can someone tell me how to install jpct for AIDE? thanks.

Pages: 1 2 3 [4]