【发布时间】:2014-01-29 12:58:07
【问题描述】:
我正在为 LWJGL 设计一个包装器,并且我有一个包装器类,它以类型安全的方式包装所有方法。但是,我遇到了一个我以前从未真正考虑过的问题。考虑我有这个方法,它接受一个枚举值和一个 int。
public static void glBindBuffer(Target target, int id) {
GL15.glBindBuffer(target.glValue, id);
}
我有一个以面向对象的方式处理 OpenGL 缓冲区对象的类。它有一个静态方法(它是静态的,因为它处理全局状态),它只是将缓冲区对象与目标分离。我有两个选择;我可以接受 BufferObject 实例或 Target 作为参数,如下所示:
public static void detach(Target target) {
GL.glBindBuffer(target, 0);
}
public static void detach(BufferObject bufferObject) {
GL.glBindBuffer(bufferObject.getTarget(), 0);
}
哪个更好?
注意:我不希望用户必须直接调用 GL.glBindBuffer(..)
【问题讨论】:
-
如果你想以面向对象的方式使用缓冲区,
bufferObject.detach()怎么样? -
两者都实现,让一个调用另一个。
-
@micha 整个类以面向对象的方式处理缓冲区对象,但是将 0 绑定到缓冲区对象并不特定于每个缓冲区对象。它还会给用户一个想法,即您必须从目标中分离所有缓冲区对象,但事实并非如此。
-
@helpermethod 我为什么要这样做?