File: decal_draw_list.h

package info (click to toggle)
freespace2 24.2.0%2Brepack-1
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid
  • size: 43,716 kB
  • sloc: cpp: 595,001; ansic: 21,741; python: 1,174; sh: 457; makefile: 248; xml: 181
file content (38 lines) | stat: -rw-r--r-- 829 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#pragma once

#include "globalincs/pstypes.h"

#include "graphics/material.h"
#include "graphics/util/UniformBuffer.h"

namespace graphics {

class decal_draw_list {
	struct decal_draw_info {
		decal_material draw_mat;

		size_t uniform_offset;
	};
	SCP_vector<decal_draw_info> _draws;

	util::UniformBuffer _buffer;

	static bool sort_draws(const decal_draw_info& left, const decal_draw_info& right);

  public:
	explicit decal_draw_list(size_t num_decals);
	~decal_draw_list();

	decal_draw_list(const decal_draw_list&) = delete;
	decal_draw_list& operator=(const decal_draw_list&) = delete;

	void add_decal(int diffuse_bitmap, int glow_bitmap, int normal_bitmap, float decal_timer, const matrix4& transform,
	               float base_alpha);

	void render();

	static void globalInit();

	static void globalShutdown();
};
}