Earlier I thought that polyvector significantly improves rendering speed, but now I do not know ..
Check it yourself, I uploaded code here:
http://www.glbasic.com/forum/index.php?topic=6341.msg51408#newmaybe I'm doing something wrong..
Yesterday I saw some old post about slow 3d on iPad with Glb, so today I was searching for some OpenGl speed-up improvements that could be adapted into Glb. I found that:
I don't know how exactly StartPoly, Polyvector works, but would be faster to draw for example map tiles with glDrawArrays? My c++ and raw OpenGl skills are low, so I only managed to rewrite some code from that video:
TYPE sb_vertex
v#[2]
uv#[2]
color%[4]
ENDTYPE
GLOBAL SB_maxverts%, sb_currvert%
GLOBAL SB_vertices[] AS sb_vertex, sb_typesize%
FUNCTION SB_init: ver_count%
DIM SB_vertices[ver_count%]
sb_currvert% = 0
SB_maxverts% = ver_count%
INLINE
sb_typesize = sizeof(sb_vertex);
ENDINLINE
ENDFUNCTION
FUNCTION SB_clear: something%
DIM SB_vertices[0]
ENDFUNCTION
FUNCTION SB_addvertex: posx#, posy#, uvx#, uvy#, vcolor%
SB_vertices[sb_currvert%].v#[0] = posx#
SB_vertices[sb_currvert%].v#[1] = posy#
SB_vertices[sb_currvert%].uv#[0] = uvx#
SB_vertices[sb_currvert%].uv#[1] = uvy#
//SB_vertices[sb_currvert%].color% = vcolor%
SB_vertices[sb_currvert%].color%[0] = 255
SB_vertices[sb_currvert%].color%[1] = 255
SB_vertices[sb_currvert%].color%[2] = 255
SB_vertices[sb_currvert%].color%[3] = 255
INC sb_currvert%
ENDFUNCTION
SUB SB_draw:
IF (sb_currvert = 0); RETURN; ENDIF
//glEnable(GL_TEXTURE_2D)
//glEnableClientState(GL_VERTEX_ARRAY)
//glEnableClientState(GL_TEXTURE_COORD_ARRAY)
//glEnable(GL_BLEND)
//glBlendFunc(GL_SRC_ALPHA, GL_ONE)
glVertexPointer(2, GL_SHORT, sb_typesize, SB_vertices[0].v#[])
glTexCoordPointer(2, GL_FLOAT, sb_typesize, SB_vertices[0].uv#[])
//glColorPointer(4, GL_UNSIGNED_BYTE, sb_typesize, SB_vertices[0].color%[])
glDrawArrays(GL_TRIANGLES, sb_typesize, sb_currvert%)
sb_currvert% = 0
ENDSUB
and to add a rectangular sprite to batch I do this: (assuming that sprite width=height=128)
SB_addvertex(spr.x, spr.y, 0, 0, white_color%)
SB_addvertex(spr.x+128, spr.y, 1, 0, white_color%)
SB_addvertex(spr.x, spr.y+128, 0, 1, white_color%)
SB_addvertex(spr.x+128, spr.y, 1, 0, white_color%)
SB_addvertex(spr.x, spr.y+128, 0, 1, white_color%)
SB_addvertex(spr.x+128, spr.y+128, 1, 1, white_color%)
You need to attach 'GLBasic\Samples\Common\gl.bas' or just download my file..
I'm getting strange results -> misplaced sprites and other crazy things.. Whats wrong in this code, and how get this working correctly? ;]
of course before drawing I set X_Make3d, X_Settexture texnumber%, -1 and X_Make2d after drawing.
[attachment deleted by admin]