5#define NO_PREPARE_RENDER 1
20#undef PTW32_SCHED_LEVEL
25#ifdef NO_PREPARE_RENDER
40 unsigned int buffers[11];
41 unsigned int indices_buffer;
43 std::vector<GameApi::TXID> textures;
75 std::mymap<int, Polys*>::iterator it = s.m_set.begin();
76 for(;it!=s.m_set.end();it++)
78 m_set[(*it).first] = (*it).second;
99 std::mymap<int, Polys*>::iterator it =
m_set.begin();
100 for(;it!=
m_set.end();it++)
102 delete m_set[(*it).first];
140 return m_set[id]->tri_polys.size(); }
143 return m_set[id]->tri_polys2.size(); }
153 return m_set[id]->quad_polys.size(); }
156 return m_set[id]->quad_polys2.size(); }
165 int poly2_count(
int id,
int i)
const {
return m_set[id]->poly_polys[i].size(); }
174 return m_set[id]->tri_normals.size(); }
184 int poly2_normal_count(
int id,
int i)
const {
return m_set[id]->poly_normals[i].size(); }
208 return m_set[id]->tri_color.size(); }
221 return m_set[id]->tri_joint.size(); }
234 return m_set[id]->tri_weight.size(); }
247 int poly2_color_count(
int id,
int i)
const {
return m_set[id]->poly_color[i].size(); }
264 void clone(
int id_source,
int id_target);
356 for(
int i=0;i<ss;i++)
358 if (i<3)
vao[i]=rend.
vao[i];
428 void render(
int id,
int a1,
int a2,
int a3,
int a4,
429 int aa1,
int aa2,
int aa3,
int aa4);
441 int tri_count=count_tri*3;
442 int quad_count=count_quad*6;
443 int poly_count=count_poly*3;
444 s.set_reserve(
id, tri_count, quad_count, poly_count);
448 int tri_count=count*3;
449 int quad_count=count*4;
450 int poly_count=count*3;
451 s.set_reserve(
id, tri_count, quad_count, poly_count);
455 int ss = coll.NumFaces();
459 for(
int i=0;i<ss;i++)
461 int w = coll.NumPoints(i);
475 s.set_reserve(
id, tri_count, quad_count, poly_count);
477 void copy(
int start_range,
int end_range, std::vector<int> attribs = std::vector<int>(), std::vector<int> attribsi = std::vector<int>());
529 int push_thread(
int start_range,
int end_range, std::vector<int> attrib=std::vector<int>(), std::vector<int> attribi=std::vector<int>())
535 s->
set_reserve(0, end_range-start_range, end_range-start_range, 0 );
542 info->start_range = start_range;
543 info->end_range = end_range;
544 info->attrib = attrib;
545 info->attribi = attribi;
562 return sets.size()-1;
565 int push_thread2(
int start_range,
int end_range,
RenderVertexArray *r, pthread_mutex_t *mutex1, pthread_mutex_t *mutex2, pthread_mutex_t *mutex3, pthread_mutex_t *gmutex, pthread_mutex_t *gmutex2, pthread_cond_t *
g_cond, pthread_cond_t *g_cond2,std::vector<int> attrib=std::vector<int>(), std::vector<int> attribi=std::vector<int>())
577 info->start_range = start_range;
578 info->end_range = end_range;
579 info->attrib = attrib;
580 info->attribi = attribi;
584 info->mutex1 = mutex1;
585 info->mutex2 = mutex2;
586 info->mutex3 = mutex3;
587 info->gmutex = gmutex;
588 info->gmutex2 = gmutex2;
590 info->g_cond2 = g_cond2;
598 pthread_attr_init(&attr);
599 pthread_attr_setstacksize(&attr, 3000000);
603 pthread_attr_destroy(&attr);
606 return sets.size()-1;
615 pthread_join(ti[
id]->thread_id, &res);
672 std::vector<VertexArraySet *> sets;
673 std::vector<FaceCollectionVertexArray2 *> va2;
674 std::vector<ThreadInfo *> ti;
Env e
Definition Common.cc:2
Color2 colors[]
Definition Effect.cc:56
LowApi * g_low
Definition GameApi_low.cc:1684
int g_pthread_count
Definition GameApi_dep_arr_render.cc:9
IMPORT void tasks_add(int id, void *(*fptr)(void *), void *data)
Definition GameApi_dep_env.cc:484
IMPORT void tasks_join(int id)
Definition GameApi_dep_env.cc:518
EditorGuiWidgetAtlas GuiWidgetForward render()
Definition GameApi_gui.cc:1412
long long g_copy_progress
Definition VertexArray.cc:4178
pthread_cond_t * g_cond
Definition GameApi_pl.cc:6340
long long g_copy_total
Definition VertexArray.cc:4177
LowApi * g_low
Definition GameApi_low.cc:1684
long long g_copy_progress
Definition VertexArray.cc:4178
Counts CalcOffsets(FaceCollection *coll, int start)
Definition VertexArray.cc:4157
int g_pthread_count
Definition GameApi_dep_arr_render.cc:9
void * thread_func(void *data)
Definition VertexArray.cc:4058
Counts CalcCounts(FaceCollection *coll, int start, int end)
Definition VertexArray.cc:4137
long long g_copy_total
Definition VertexArray.cc:4177
void info(std::string info)
Definition check.cc:24
void ready()
Definition VertexArray.cc:4492
void prepare(int i)
Definition VertexArray.cc:4312
void render()
Definition VertexArray.cc:4523
Dyn(VertexArrays *arr)
Definition VertexArray.cc:4306
void update(int i)
Definition VertexArray.cc:4458
void set_texture(std::vector< GameApi::TXID > vec)
Definition VertexArray.cc:4307
Definition GraphI.hh:2495
Definition VertexArray.hh:436
void copy(int start_range, int end_range, std::vector< int > attribs=std::vector< int >(), std::vector< int > attribsi=std::vector< int >())
Definition VertexArray.cc:4184
void reserve_fixed(int id, int count)
Definition VertexArray.hh:446
void reserve_fixed2(int id, int count_tri, int count_quad, int count_poly)
Definition VertexArray.hh:439
void reserve(int id)
Definition VertexArray.hh:453
FaceCollectionVertexArray2(const FaceCollection &coll, VertexArraySet &s)
Definition VertexArray.hh:438
Definition EffectI.hh:212
Definition VectorTools.hh:279
RenderVertexArray2(VertexArraySet &s1, VertexArraySet &s2)
Definition VertexArray.hh:426
Definition VertexArray.hh:351
void set_no_delete(bool b)
Definition VertexArray.hh:393
void update_buffers(RenderVertexArray_bufferids ids)
Definition VertexArray.cc:2127
bool bufferdata_done
Definition VertexArray.hh:420
std::vector< unsigned int > attribi_buffer2
Definition VertexArray.hh:416
VertexArraySet & s
Definition VertexArray.hh:398
bool nodelete
Definition VertexArray.hh:419
GameApi::PinIn update_tri(int id, int buffer_id, int start, int end)
Definition VertexArray.cc:1431
std::vector< unsigned int > attribi_buffer
Definition VertexArray.hh:415
std::vector< unsigned int > attrib_buffer
Definition VertexArray.hh:412
unsigned int buffers[7]
Definition VertexArray.hh:399
void del()
Definition VertexArray.cc:2700
unsigned int normals_buffer
Definition VertexArray.hh:408
std::vector< unsigned int > attrib_buffer3
Definition VertexArray.hh:414
std::vector< unsigned int > attribi_buffer3
Definition VertexArray.hh:417
unsigned int color_buffer
Definition VertexArray.hh:410
GameApi::PinIn prepare(int id, bool isnull=false, int tri_count=-1, int quad_count=-1, int poly_count=-1)
Definition VertexArray.cc:2255
GameApi::PinIn prepare_indices(int id, const unsigned char *ind1, const unsigned short *ind2, const unsigned int *ind3, int facecount)
Definition VertexArray.cc:2793
void sort_blit(int id, Matrix in_MV)
Definition VertexArray.cc:2019
RenderVertexArray(VertexArraySet &s2, RenderVertexArray &rend)
Definition VertexArray.hh:353
GameApi::PinIn render_instanced_matrix(int id, Matrix *positions, Vector *normals, float *colors, int size, int colours_divisor)
Definition VertexArray.cc:2945
int quad_count
Definition VertexArray.hh:404
GameApi::PinIn prepare_instanced(int id, Point *positions, Vector *normals, float *colors, int size, int colour_divisor)
Definition VertexArray.cc:2823
GameApi::PinIn prepare_instanced_matrix(int id, Matrix *positions, Vector *normals, float *colors, int size, int colour_divisor)
Definition VertexArray.cc:2740
unsigned int buffers2[7]
Definition VertexArray.hh:401
GameApi::PinIn update(int id)
Definition VertexArray.cc:2044
unsigned int color_buffer_matrix
Definition VertexArray.hh:411
RenderVertexArray(LowApi *g_low, VertexArraySet &s)
Definition VertexArray.hh:379
int poly_count
Definition VertexArray.hh:405
~RenderVertexArray()
Definition VertexArray.hh:395
unsigned int vao[3]
Definition VertexArray.hh:400
unsigned int pos_buffer
Definition VertexArray.hh:406
void fetch_buffers(RenderVertexArray_bufferids &ids)
Definition VertexArray.cc:2191
GameApi::PinIn render_instanced(int id, Point *positions, Vector *normals, float *colors, int size, int colours_divisor)
Definition VertexArray.cc:3316
unsigned int buffers3[7]
Definition VertexArray.hh:402
unsigned int indices_buffer
Definition VertexArray.hh:418
unsigned int normals_buffer_matrix
Definition VertexArray.hh:409
unsigned int pos_buffer_matrix
Definition VertexArray.hh:407
int tri_count
Definition VertexArray.hh:403
std::vector< unsigned int > attrib_buffer2
Definition VertexArray.hh:413
Definition VertexArray.hh:526
int push_thread(int start_range, int end_range, std::vector< int > attrib=std::vector< int >(), std::vector< int > attribi=std::vector< int >())
Definition VertexArray.hh:529
~ThreadedPrepare()
Definition VertexArray.hh:652
void transfer_to_gpu_mem(VertexArraySet *set, RenderVertexArray &r, int rend_id, int buf, int start, int end)
Definition VertexArray.hh:629
int push_thread2(int start_range, int end_range, RenderVertexArray *r, pthread_mutex_t *mutex1, pthread_mutex_t *mutex2, pthread_mutex_t *mutex3, pthread_mutex_t *gmutex, pthread_mutex_t *gmutex2, pthread_cond_t *g_cond, pthread_cond_t *g_cond2, std::vector< int > attrib=std::vector< int >(), std::vector< int > attribi=std::vector< int >())
Definition VertexArray.hh:565
void join(int id)
Definition VertexArray.hh:609
ThreadedPrepare(FaceCollection *faces)
Definition VertexArray.hh:528
VertexArraySet * collect()
Definition VertexArray.hh:638
Definition VectorTools.hh:119
Definition VectorTools.hh:125
Definition VertexArray.hh:49
const Point * poly_polys(int id) const
Definition VertexArray.hh:160
const float * tri_attrib_polys(int id, int attrib_id) const
Definition VertexArray.hh:189
int quad_color_count(int id) const
Definition VertexArray.hh:212
const unsigned short * indices_short() const
Definition VertexArray.hh:169
VertexArraySet()
Definition VertexArray.hh:57
const float * tri_color_polys(int id) const
Definition VertexArray.hh:209
int poly_count_f(int id) const
Definition VertexArray.hh:159
const Vector * poly_normal_polys(int id) const
Definition VertexArray.hh:181
const unsigned int * indices_int() const
Definition VertexArray.hh:170
void push_joint_with_indices(int id, int num, VEC4 *points, unsigned int *indexes, int points_num)
Definition VertexArray.cc:783
Point * tri_texcoord_polys(int id)
Definition VertexArray.hh:251
void push_attrib_with_indices(int id, int attrib_id, int num, float *attribs, unsigned int *indexes)
const VEC4 * quad_joint_polys(int id) const
Definition VertexArray.hh:227
int quad_attrib_count(int id, int attrib_id) const
Definition VertexArray.hh:190
int quad_weight_count(int id) const
Definition VertexArray.hh:238
void push_attribi(int id, int attrib_id, int num, int *attribi)
Definition VertexArray.cc:596
void set_reserve(int id, int tri_count, int quad_count, int poly_count)
Definition VertexArray.cc:169
int quad_normal_count(int id) const
Definition VertexArray.hh:178
bool is_texture()
Definition VertexArray.hh:54
int tri_color_count(int id) const
Definition VertexArray.hh:206
void push_poly2_with_indices(int id, int num, Point *points, unsigned int *indexes, int points_num)
Definition VertexArray.cc:344
const VEC4 * tri_joint_polys(int id) const
Definition VertexArray.hh:222
int tri_weight_count(int id) const
Definition VertexArray.hh:232
static void append_to_polys(VertexArraySet::Polys &target, const VertexArraySet::Polys &source)
Definition VertexArray.cc:1254
const Point * poly_polys2(int id) const
Definition VertexArray.hh:162
void push_normal_with_indices(int id, int num, Vector *vectors, unsigned int *indexes, int points_num)
Definition VertexArray.cc:448
VertexArraySet(const VertexArraySet &s)
Definition VertexArray.hh:66
const float * poly_attrib_polys(int id, int attrib_id) const
Definition VertexArray.hh:194
int tri_attribi_count(int id, int attrib_id) const
Definition VertexArray.hh:196
void push_joint(int id, int num, VEC4 *points)
Definition VertexArray.cc:841
void push_attribi_with_indices(int id, int attrib_id, int num, int *attribi, unsigned int *indexes)
const unsigned char * indices_char() const
Definition VertexArray.hh:168
void clear_poly_and_poly2(int id)
Definition VertexArray.cc:121
void SetRef(FaceBufferRef r)
Definition VertexArray.hh:94
int tri_attrib_count(int id, int attrib_id) const
Definition VertexArray.hh:188
int quad_count2(int id) const
Definition VertexArray.hh:154
void push_weight(int id, int num, VEC4 *points)
Definition VertexArray.cc:946
int poly_joint_count(int id) const
Definition VertexArray.hh:228
const VEC4 * poly_weight_polys(int id) const
Definition VertexArray.hh:241
void push_texcoord_with_indices(int id, int num, Point *points, unsigned int *indexes, int points_num)
Definition VertexArray.cc:994
FaceBufferRef ref
Definition VertexArray.hh:317
bool has_color
Definition VertexArray.hh:314
const VEC4 * poly_joint_polys(int id) const
Definition VertexArray.hh:229
const VEC4 * tri_weight_polys(int id) const
Definition VertexArray.hh:235
const VertexArraySet * m_ref
Definition VertexArray.hh:311
bool has_attrib
Definition VertexArray.hh:313
void check_m_set(int id)
Definition VertexArray.cc:25
void push_texcoord(int id, int num, Point *points)
Definition VertexArray.cc:1051
int poly2_attribi_count(int id, int attrib_id) const
Definition VertexArray.hh:201
const int * poly_attribi_polys(int id, int attrib_id) const
Definition VertexArray.hh:202
const int * tri_attribi_polys(int id, int attrib_id) const
Definition VertexArray.hh:197
int quad_attribi_count(int id, int attrib_id) const
Definition VertexArray.hh:198
const Point * quad_polys(int id) const
Definition VertexArray.hh:157
const Point * tri_polys2(int id) const
Definition VertexArray.hh:148
bool is_many_texture()
Definition VertexArray.hh:56
void push_attrib(int id, int attrib_id, int num, float *attribs)
Definition VertexArray.cc:551
const Vector * quad_normal_polys(int id) const
Definition VertexArray.hh:179
void push_color_with_indices(int id, int num, unsigned int *colors, unsigned int *indexes, int points_num)
Definition VertexArray.cc:684
void push_poly_with_indices(int id, int num, Point *points, unsigned int *indexes, int points_num)
Definition VertexArray.cc:243
void push_normal(int id, int num, Vector *vectors)
Definition VertexArray.cc:505
int texture_id
Definition VertexArray.hh:51
void print_stat(int id)
Definition VertexArray.cc:34
int poly_attribi_count(int id, int attrib_id) const
Definition VertexArray.hh:200
~VertexArraySet()
Definition VertexArray.cc:1165
std::mymap< int, Polys * > m_set
Definition VertexArray.hh:309
void apply_change(DynamicChange *change, int id_source, int id_target, MainLoopEnv &e)
Definition VertexArray.cc:1152
const float * poly_color_polys(int id) const
Definition VertexArray.hh:215
void clear_arrays()
Definition VertexArray.hh:97
const VEC4 * quad_weight_polys(int id) const
Definition VertexArray.hh:239
int ref_count
Definition VertexArray.hh:310
int quad_texcoord_count(int id) const
Definition VertexArray.hh:254
bool is_array_texture()
Definition VertexArray.hh:55
int tri_count2(int id) const
Definition VertexArray.hh:141
void free_reserve(int id)
Definition VertexArray.cc:137
void push_weight_with_indices(int id, int num, VEC4 *points, unsigned int *indexes, int points_num)
Definition VertexArray.cc:889
void push_poly2(int id, int num, Point *points)
Definition VertexArray.cc:401
void explode(int id, Point p, float dist)
Definition VertexArray.cc:47
std::vector< int > texture_many_ids
Definition VertexArray.hh:52
int bm_id
Definition VertexArray.hh:53
int poly_count2(int id) const
Definition VertexArray.hh:161
int poly_normal_count(int id) const
Definition VertexArray.hh:180
void split_color2(std::vector< float > &vec, unsigned int color)
Definition VertexArray.cc:660
int poly_attrib_count(int id, int attrib_id) const
Definition VertexArray.hh:192
int poly2_attrib_count(int id, int attrib_id) const
Definition VertexArray.hh:193
void clear_vectors(int id)
Definition VertexArray.cc:85
const Point * quad_polys2(int id) const
Definition VertexArray.hh:158
const Point * poly_texcoord_polys(int id) const
Definition VertexArray.hh:257
bool has_skeleton
Definition VertexArray.hh:316
int poly_color_count(int id) const
Definition VertexArray.hh:214
int quad_joint_count(int id) const
Definition VertexArray.hh:226
const int * quad_attribi_polys(int id, int attrib_id) const
Definition VertexArray.hh:199
bool has_normal
Definition VertexArray.hh:312
void free_memory()
Definition VertexArray.cc:1180
int tri_texcoord_count(int id) const
Definition VertexArray.hh:250
int tri_count(int id) const
Definition VertexArray.hh:138
Point * tri_polys(int id)
Definition VertexArray.hh:144
const float * quad_attrib_polys(int id, int attrib_id) const
Definition VertexArray.hh:191
void push_color(int id, int num, unsigned int *colors)
Definition VertexArray.cc:738
int tri_joint_count(int id) const
Definition VertexArray.hh:219
int poly_texcoord_count(int id) const
Definition VertexArray.hh:256
void clone(int id_source, int id_target)
Definition VertexArray.cc:1114
int get_bm_id() const
Definition VertexArray.hh:107
void set_bm_id(int id)
Definition VertexArray.hh:106
const Vector * tri_normal_polys(int id) const
Definition VertexArray.hh:175
void push_poly(int id, int num, Point *points)
Definition VertexArray.cc:299
int poly_weight_count(int id) const
Definition VertexArray.hh:240
Point * quad_texcoord_polys(int id)
Definition VertexArray.hh:255
int quad_count(int id) const
Definition VertexArray.hh:151
int tri_normal_count(int id) const
Definition VertexArray.hh:172
void split_color(std::vector< float > &vec, unsigned int color)
Definition VertexArray.cc:638
const float * quad_color_polys(int id) const
Definition VertexArray.hh:213
bool has_texcoord
Definition VertexArray.hh:315
Definition EffectI.hh:102
background color
Definition gameapi_example.php:46
lazy data
Definition meshpage.php:1583
n< br > font size
Definition meshpage.php:3536
Definition VertexArray.hh:341
int tri_count
Definition VertexArray.hh:342
int poly_count
Definition VertexArray.hh:344
int quad_count
Definition VertexArray.hh:343
Definition EffectI.hh:171
Definition GameApi_low.hh:812
Definition GraphI.hh:1502
Definition VertexArray.hh:321
std::vector< unsigned int > attrib_buffer3
Definition VertexArray.hh:334
std::vector< unsigned int > attribi_buffer2
Definition VertexArray.hh:336
unsigned int vao[3]
Definition VertexArray.hh:323
unsigned int buffers3[7]
Definition VertexArray.hh:325
unsigned int buffers2[7]
Definition VertexArray.hh:324
unsigned int indices_buffer
Definition VertexArray.hh:338
unsigned int pos_buffer_matrix
Definition VertexArray.hh:327
std::vector< unsigned int > attribi_buffer3
Definition VertexArray.hh:337
unsigned int normals_buffer_matrix
Definition VertexArray.hh:329
unsigned int pos_buffer
Definition VertexArray.hh:326
std::vector< unsigned int > attribi_buffer
Definition VertexArray.hh:335
std::vector< unsigned int > attrib_buffer2
Definition VertexArray.hh:333
unsigned int normals_buffer
Definition VertexArray.hh:328
unsigned int color_buffer
Definition VertexArray.hh:330
unsigned int color_buffer_matrix
Definition VertexArray.hh:331
unsigned int buffers[7]
Definition VertexArray.hh:322
std::vector< unsigned int > attrib_buffer
Definition VertexArray.hh:332
Definition VertexArray.hh:498
ThreadInfo()
Definition VertexArray.hh:499
pthread_cond_t * g_cond2
Definition VertexArray.hh:516
pthread_mutex_t * gmutex
Definition VertexArray.hh:513
pthread_mutex_t * mutex2
Definition VertexArray.hh:511
std::vector< int > attrib
Definition VertexArray.hh:505
ThreadedPrepare * prep
Definition VertexArray.hh:509
VertexArraySet * set
Definition VertexArray.hh:501
pthread_mutex_t * mutex3
Definition VertexArray.hh:512
pthread_mutex_t * mutex1
Definition VertexArray.hh:510
int end_range
Definition VertexArray.hh:504
std::vector< int > attribi
Definition VertexArray.hh:506
RenderVertexArray * r
Definition VertexArray.hh:507
FaceCollection * faces
Definition VertexArray.hh:508
Counts ct2_offsets
Definition VertexArray.hh:517
Counts ct2_counts
Definition VertexArray.hh:518
FaceCollectionVertexArray2 * va
Definition VertexArray.hh:502
pthread_cond_t * g_cond
Definition VertexArray.hh:515
int start_range
Definition VertexArray.hh:503
pthread_t thread_id
Definition VertexArray.hh:500
pthread_mutex_t * gmutex2
Definition VertexArray.hh:514
Definition VertexArray.hh:267
std::vector< Point > tri_polys2
Definition VertexArray.hh:271
std::vector< Vector > tri_normals
Definition VertexArray.hh:275
std::vector< VEC4 > tri_weight
Definition VertexArray.hh:291
std::vector< VEC4 > poly_joint
Definition VertexArray.hh:289
std::vector< Point > tri_texcoord
Definition VertexArray.hh:283
std::mymap< int, std::vector< float > > quad_attribs
Definition VertexArray.hh:298
std::vector< float > poly_color
Definition VertexArray.hh:281
std::vector< Point > poly_texcoord
Definition VertexArray.hh:285
std::vector< Point > quad_texcoord
Definition VertexArray.hh:284
std::vector< Vector > poly_normals
Definition VertexArray.hh:277
std::mymap< int, std::vector< int > > tri_attribsi
Definition VertexArray.hh:301
std::vector< float > quad_color
Definition VertexArray.hh:280
std::vector< Point > poly_polys
Definition VertexArray.hh:270
std::vector< Point > quad_polys
Definition VertexArray.hh:269
std::vector< Point > poly_polys2
Definition VertexArray.hh:273
std::vector< VEC4 > tri_joint
Definition VertexArray.hh:287
std::vector< VEC4 > poly_weight
Definition VertexArray.hh:293
std::mymap< int, std::vector< float > > poly_attribs
Definition VertexArray.hh:299
std::vector< float > tri_color
Definition VertexArray.hh:279
std::mymap< int, std::vector< int > > quad_attribsi
Definition VertexArray.hh:302
std::mymap< int, std::vector< int > > poly_attribsi
Definition VertexArray.hh:303
std::mymap< int, std::vector< float > > tri_attribs
Definition VertexArray.hh:297
std::vector< Vector > quad_normals
Definition VertexArray.hh:276
std::vector< VEC4 > quad_weight
Definition VertexArray.hh:292
std::vector< Point > quad_polys2
Definition VertexArray.hh:272
std::vector< VEC4 > quad_joint
Definition VertexArray.hh:288
std::vector< Point > tri_polys
Definition VertexArray.hh:268
num
Definition view.php:2821