SoundBuffer.java
com.mojang.blaze3d.audio.SoundBuffer
信息
- 全限定名:com.mojang.blaze3d.audio.SoundBuffer
- 类型:public class
- 包:com.mojang.blaze3d.audio
- 源码路径:src/main/java/com/mojang/blaze3d/audio/SoundBuffer.java
- 起始行号:L12
- 职责:
TODO
字段/常量
-
data- 类型:
ByteBuffer - 修饰符:
private - 源码定位:
L13 - 说明:
TODO
- 类型:
-
format- 类型:
AudioFormat - 修饰符:
private final - 源码定位:
L14 - 说明:
TODO
- 类型:
-
hasAlBuffer- 类型:
boolean - 修饰符:
private - 源码定位:
L15 - 说明:
TODO
- 类型:
-
alBuffer- 类型:
int - 修饰符:
private - 源码定位:
L16 - 说明:
TODO
- 类型:
-
size- 类型:
int - 修饰符:
private final - 源码定位:
L17 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public SoundBuffer(ByteBuffer data, AudioFormat format) @ L19
- 构造器名:SoundBuffer
- 源码定位:L19
- 修饰符:public
参数:
- data: ByteBuffer
- format: AudioFormat
说明:
TODO
方法
下面的方法块按源码顺序生成。
OptionalInt getAlBuffer() @ L25
- 方法名:getAlBuffer
- 源码定位:L25
- 返回类型:OptionalInt
- 修饰符:package-private
参数:
- 无
说明:
TODO
public void discardAlBuffer() @ L51
- 方法名:discardAlBuffer
- 源码定位:L51
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public OptionalInt releaseAlBuffer() @ L62
- 方法名:releaseAlBuffer
- 源码定位:L62
- 返回类型:OptionalInt
- 修饰符:public
参数:
- 无
说明:
TODO
public AudioFormat format() @ L68
- 方法名:format
- 源码定位:L68
- 返回类型:AudioFormat
- 修饰符:public
参数:
- 无
说明:
TODO
public int size() @ L72
- 方法名:size
- 源码定位:L72
- 返回类型:int
- 修饰符:public
参数:
- 无
说明:
TODO
public boolean isValid() @ L76
- 方法名:isValid
- 源码定位:L76
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class SoundBuffer {
private @Nullable ByteBuffer data;
private final AudioFormat format;
private boolean hasAlBuffer;
private int alBuffer;
private final int size;
public SoundBuffer(ByteBuffer data, AudioFormat format) {
this.data = data;
this.format = format;
this.size = data.limit();
}
OptionalInt getAlBuffer() {
if (!this.hasAlBuffer) {
if (this.data == null) {
return OptionalInt.empty();
}
int audioFormat = OpenAlUtil.audioFormatToOpenAl(this.format);
int[] intBuffer = new int[1];
AL10.alGenBuffers(intBuffer);
if (OpenAlUtil.checkALError("Creating buffer")) {
return OptionalInt.empty();
}
AL10.alBufferData(intBuffer[0], audioFormat, this.data, (int)this.format.getSampleRate());
if (OpenAlUtil.checkALError("Assigning buffer data")) {
return OptionalInt.empty();
}
this.alBuffer = intBuffer[0];
this.hasAlBuffer = true;
this.data = null;
}
return OptionalInt.of(this.alBuffer);
}
public void discardAlBuffer() {
if (this.hasAlBuffer) {
AL10.alDeleteBuffers(new int[]{this.alBuffer});
if (OpenAlUtil.checkALError("Deleting stream buffers")) {
return;
}
}
this.hasAlBuffer = false;
}
public OptionalInt releaseAlBuffer() {
OptionalInt result = this.getAlBuffer();
this.hasAlBuffer = false;
return result;
}
public AudioFormat format() {
return this.format;
}
public int size() {
return this.size;
}
public boolean isValid() {
return this.data != null || this.hasAlBuffer;
}
}引用的其他类
- OpenAlUtil
- 引用位置:
方法调用 - 关联成员:
OpenAlUtil.audioFormatToOpenAl(), OpenAlUtil.checkALError()
- 引用位置: