Author: theagentd (posted 2012-08-07 16:59:08, viewed 82 times)
| 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
| import org.lwjgl.opengl.ContextCapabilities;
import org.lwjgl.opengl.EXTTextureFilterAnisotropic;
import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.opengl.GL12.*;
import static org.lwjgl.opengl.GL14.*;
import static org.lwjgl.opengl.GL33.*;
import org.lwjgl.opengl.GLContext;
public class Sampler {
private static boolean checkCapabilities = true;
private static boolean anisotropySupported;
private static int maxAnisotropy;
private int id;
public Sampler(){
if(checkCapabilities){
ContextCapabilities cc = GLContext.getCapabilities();
if(!cc.OpenGL33 && !cc.GL_ARB_sampler_objects){
throw new RuntimeException("Sampler objects are not supported!");
}
anisotropySupported = cc.GL_EXT_texture_filter_anisotropic;
if(anisotropySupported){
maxAnisotropy = glGetInteger(EXTTextureFilterAnisotropic.GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT);
}
checkCapabilities = false;
}
id = glGenSamplers();
}
public void setMinMagFilter(int minFilter, int magFilter){
glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, minFilter);
glSamplerParameteri(id, GL_TEXTURE_MAG_FILTER, magFilter);
}
public void setWrapModes(int filter){
setWrapModes(filter, filter, filter);
}
public void setWrapModes(int s, int t){
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, s);
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, t);
}
public void setWrapModes(int s, int t, int r){
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, s);
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, t);
glSamplerParameteri(id, GL_TEXTURE_WRAP_R, r);
}
public void setMinLod(float min){
glSamplerParameterf(id, GL_TEXTURE_MIN_LOD, min);
}
public void setMaxLod(float max){
glSamplerParameterf(id, GL_TEXTURE_MAX_LOD, max);
}
public void setMinMaxLOD(float min, float max){
setMinLod(min);
setMaxLod(max);
}
public void setLODBias(float bias){
glSamplerParameterf(id, GL_TEXTURE_LOD_BIAS, bias);
}
public void setAnisotropy(float anisotropy){
if(anisotropySupported){
glSamplerParameterf(id, EXTTextureFilterAnisotropic.GL_TEXTURE_MAX_ANISOTROPY_EXT, Math.min(maxAnisotropy, Math.max(anisotropy, 1)));
}
}
public void setCompareFunc(int func){
glSamplerParameteri(id, GL_TEXTURE_COMPARE_FUNC, func);
}
public void setCompareMode(int mode){
glSamplerParameteri(id, GL_TEXTURE_COMPARE_MODE, mode);
}
public int getID(){
return id;
}
public void bind(int textureUnit){
glBindSampler(textureUnit, id);
}
public static void unbind(int textureUnit){
glBindSampler(textureUnit, 0);
}
} |
Special syntax:
- To highlight a line (yellow background), prefix it with '@@'
- To indicate that a line should be removed (red background), prefix it with '-'
- To indicate that a line should be added (green background), prefix it with '+'
- To post multiple snippets, seperate them by '~~~~'
|
Add your game by posting it in the WIP section,
or publish it in Showcase.
The first screenshot will be displayed as a thumbnail.
|
|