-
Notifications
You must be signed in to change notification settings - Fork 2
/
EPainter.cpp
51 lines (44 loc) · 1.69 KB
/
EPainter.cpp
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
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "global.h"
#include "EPainter.h"
#include <assert.h>
namespace Eg {
EPainter::EPainter() {
}
void EPainter::draw(DrawMode mode, const PointData& vertexs, const ColorData& colors) {
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glVertexPointer(2, GL_DOUBLE, 0, vertexs.data());
glColorPointer(4, GL_DOUBLE, 0, colors.data());
glDrawArrays(mode, 0, vertexs.size() / 2);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
}
void EPainter::draw(DrawMode mode, const PointData& vertexs, const PointData& texcoords) {
glEnableClientState(GL_VERTEX_ARRAY);
assert(glGetError());
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
assert(glGetError());
glVertexPointer(2, GL_DOUBLE, 0, vertexs.data());
assert(glGetError());
glTexCoordPointer(2, GL_DOUBLE, 0, texcoords.data());
assert(glGetError());
glDrawArrays(mode, 0, vertexs.size() / 2);
assert(glGetError());
glDisableClientState(GL_VERTEX_ARRAY);
assert(glGetError());
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
assert(glGetError());
}
void EPainter::draw(DrawMode mode, const PointData& vertexs, const ColorData& colors, const PointData& texcoords) {
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(2, GL_DOUBLE, 0, vertexs.data());
glColorPointer(4, GL_DOUBLE, 0, colors.data());
glTexCoordPointer(2, GL_DOUBLE, 0, texcoords.data());
glDrawArrays(mode, 0, vertexs.size() / 2);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
}