Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 26 Oct 2011
Offline Last Active Sep 18 2014 04:36 AM

Posts I've Made

In Topic: Orthographic camera

18 June 2014 - 01:35 AM

looks like you have your matrix multiplication reversed.


A * B * C != C * B * A


reverse the order.

In Topic: Optimising my renderer

17 April 2014 - 07:39 PM

for(texture in textures)

    for(sprite in sprites)

      if(sprite.texture == texture)



    if(list.size > 0)




thats the basics. implementation is up to you

In Topic: Optimising my renderer

17 April 2014 - 03:07 AM

•Minimize state changes and group the remaining state changes. How do you group state changes?

- for example... changing the alpha blending. 

•Use static vertex buffers where possible. How do you know if it is static?

-i forget the flags but basically... can you write to it after it's created? then it isn't static

Use one large static vertex buffer per FVF for static objects, rather than one per object. What if each object has the same vertex property? Eg. all objects are 256 x 256 quads? reuse the same buffer?

- i create 2-3 pools. switch pools every frame. hopefully reduces lag to gpu

•If your application needs random access into the vertex buffer in AGP memory, choose a vertex format size that is a multiple of 32 bytes. Otherwise, select the smallest appropriate format. Random access as in needing to change vertexes at runtime?

- data = vb->lock(); data +13 = x; vb->unlock();   lock/unlock as minimally as possible. write to a locked buffer as minimially as possible.


one thing i noticed is you are doing 1 draw call per sprite. group sprites by texture to reduce draw calls. you may have 10k sprites but do you have 10k textures? maybe you have 10k sprites but they are on 2 textures. you don't need 10k draw calls. you can do it in 2.

In Topic: Cel-Shading problem with backfaces seemingly being drawn on top of frontfaces.

20 March 2014 - 03:58 AM

while the actual calculation of three matrixs M * V * P may take a shorter amount of time on the GPU then the CPU. typically the CPU is a frame or two ahead of the GPU anyway. Also moving any calculations from the gpu to c++ with make your shaders faster meaning you can draw more pixels per second meaning you have a higher fps.


for shaders i follow the KISS method.

In Topic: Problem loading texture O

17 March 2014 - 07:01 PM

maybe not the cause of your issue however border is an int not a float.


void glTexImage2D( GLenum target,
GLint level,
GLint internalFormat,
GLsizei width,
GLsizei height,
GLint border,
GLenum format,
GLenum type,
const GLvoid * data);