… | |
… | |
297 | |
297 | |
298 | struct stream_i : var_i |
298 | struct stream_i : var_i |
299 | { |
299 | { |
300 | void build (shader_builder &b); |
300 | void build (shader_builder &b); |
301 | void build_decl (ostringstream &b); |
301 | void build_decl (ostringstream &b); |
302 | stream_i (const char *strtype) : var_i (strtype) { } |
302 | stream_i (const char *strtype); |
303 | }; |
303 | }; |
304 | |
304 | |
305 | template<int dimension, GLenum gltype, const char *strtype> |
305 | template<int dimension, GLenum gltype, const char *strtype> |
306 | struct varying_i : stream_i |
306 | struct varying_i : stream_i |
307 | { |
307 | { |
308 | varying_i (const char *glname) |
308 | varying_i () : stream_i (strtype) { } |
309 | : stream_i (strtype) |
|
|
310 | { |
|
|
311 | strcpy (name, glname); |
|
|
312 | } |
|
|
313 | |
309 | |
314 | void set (GLsizei stride, GLvoid *ptr) |
310 | void set (GLsizei stride, GLvoid *ptr) |
315 | { |
311 | { |
316 | //cgGLSetParameterPointer (param, dimension, gltype, stride, ptr); |
312 | //cgGLSetParameterPointer (param, dimension, gltype, stride, ptr); |
317 | } |
313 | } |
318 | }; |
314 | }; |
319 | |
315 | |
320 | template<int dimension, const char *strtype> |
316 | template<int dimension, const char *strtype> |
321 | struct varying_f_i : varying_i<dimension, GL_FLOAT, strtype> |
317 | struct varying_f_i : varying_i<dimension, GL_FLOAT, strtype> |
322 | { |
318 | { |
323 | varying_f_i (const char *glname) : varying_i<dimension, GL_FLOAT, strtype> (glname) { } |
|
|
324 | |
|
|
325 | void set (const gl::vertex_buffer_object &vb, GLint offset) |
319 | void set (const gl::vertex_buffer_object &vb, GLint offset) |
326 | { |
320 | { |
327 | varying_i<dimension, GL_FLOAT, strtype>::set (gl::format_stride (vb.format), (GLvoid *)(long)offset); |
321 | varying_i<dimension, GL_FLOAT, strtype>::set (gl::format_stride (vb.format), (GLvoid *)(long)offset); |
328 | } |
322 | } |
329 | }; |
323 | }; |
330 | |
324 | |
331 | struct varying_1f_i : varying_f_i<1, str_float> |
325 | struct varying_1f_i : varying_f_i<1, str_float> |
332 | { |
326 | { |
333 | varying_1f_i (const char *glname) : varying_f_i<1, str_float> (glname) { } |
|
|
334 | }; |
327 | }; |
335 | |
328 | |
336 | struct varying_2f_i : varying_f_i<2, str_vec2> |
329 | struct varying_2f_i : varying_f_i<2, str_vec2> |
337 | { |
330 | { |
338 | varying_2f_i (const char *glname) : varying_f_i<2, str_vec2> (glname) { } |
|
|
339 | |
|
|
340 | void set_t (const gl::vertex_buffer_object &vb) |
331 | void set_t (const gl::vertex_buffer_object &vb) |
341 | { |
332 | { |
342 | set (vb, gl::format_offset_t (vb.format)); |
333 | set (vb, gl::format_offset_t (vb.format)); |
343 | } |
334 | } |
344 | }; |
335 | }; |
345 | |
336 | |
346 | struct varying_3f_i : varying_f_i<3, str_vec3> |
337 | struct varying_3f_i : varying_f_i<3, str_vec3> |
347 | { |
338 | { |
348 | varying_3f_i (const char *glname) : varying_f_i<3, str_vec3> (glname) { } |
|
|
349 | |
|
|
350 | void set_p (const gl::vertex_buffer_object &vb) |
339 | void set_p (const gl::vertex_buffer_object &vb) |
351 | { |
340 | { |
352 | set (vb, gl::format_offset_p (vb.format)); |
341 | set (vb, gl::format_offset_p (vb.format)); |
353 | } |
342 | } |
354 | |
343 | |
… | |
… | |
358 | } |
347 | } |
359 | }; |
348 | }; |
360 | |
349 | |
361 | struct varying_4f_i : varying_f_i<4, str_vec4> |
350 | struct varying_4f_i : varying_f_i<4, str_vec4> |
362 | { |
351 | { |
363 | varying_4f_i (const char *glname) : varying_f_i<4, str_vec4> (glname) { } |
|
|
364 | }; |
352 | }; |
365 | |
353 | |
366 | typedef var_ref<varying_1f_i> varying_1f; |
354 | typedef var_ref<varying_1f_i> varying_1f; |
367 | typedef var_ref<varying_2f_i> varying_2f; |
355 | typedef var_ref<varying_2f_i> varying_2f; |
368 | typedef var_ref<varying_3f_i> varying_3f; |
356 | typedef var_ref<varying_3f_i> varying_3f; |