2012-10-13 51 views
0

我想在slick2D中添加VBO。我在網上找到的是如何在3D環境中初始化VBO。任何人都知道如何在2D中做到這一點?嘗試在Slick2D中添加VBO

我的實際測試(在光滑的上下文中使4平方)使這個(我添加corrds在黑色):vbo in slick2D http://tof.canardpc.com/view/1594ca1b-645c-4736-99e6-0507a0b3777a.jpg

下面我的init(在我的遊戲狀態的init方法):

// set up OpenGL 
GL11.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); 

GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY); 
GL11.glEnableClientState(GL11.GL_COLOR_ARRAY); 

GL11.glMaterial(GL11.GL_FRONT, GL11.GL_SPECULAR, floatBuffer(1.0f, 1.0f, 1.0f, 1.0f)); 
GL11.glMaterialf(GL11.GL_FRONT, GL11.GL_SHININESS, 25.0f); 

// set up the camera 
GL11.glMatrixMode(GL11.GL_PROJECTION); 
GL11.glLoadIdentity(); 

GL11.glMatrixMode(GL11.GL_MODELVIEW); 
GL11.glLoadIdentity(); 

// create our vertex buffer objects 
IntBuffer buffer = BufferUtils.createIntBuffer(1); 
GL15.glGenBuffers(buffer); 

int vertex_buffer_id = buffer.get(0); 
FloatBuffer vertex_buffer_data = BufferUtils.createFloatBuffer(vertex_data_array.length); 
vertex_buffer_data.put(vertex_data_array); 
vertex_buffer_data.rewind(); 

GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertex_buffer_id); 
GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertex_buffer_data, GL15.GL_STATIC_DRAW); 

而且渲染(在遊戲狀態的渲染方法):

g.setDrawMode(Graphics.MODE_ALPHA_BLEND) ; 

// perform rotation transformations 
GL11.glPushMatrix(); 

// render the cube 
GL11.glVertexPointer(3, GL11.GL_FLOAT, 28, 0); 
GL11.glColorPointer(4, GL11.GL_FLOAT, 28, 12); 

GL11.glDrawArrays(GL11.GL_QUADS, 0, vertex_data_array.length/7); 

// restore the matrix to pre-transformation values 
GL11.glPopMatrix(); 

我覺得不對勁,因爲所有其他渲染消失(文本和精靈)和coords不再是窗口大小。

編輯:我嘗試這樣的事情GL11.glOrtho(0,800,600,0,-1,1);用奇怪的結果

感謝

回答

0

我加入GL11.glOrtho(0,800,600,0,-1,1)RESOLV問題;並禁用glEnableClientState(glDisableClientState)。

但是我最終會轉向libgdx框架,他們本身就是這麼做的。