Является ли это правильным? Я в основном хочу выполнить определенный метод void.Использование лямбда для выполнения пустоты: Это правильно?
public abstract class Uniforms {
public static void setUniformMatrix4(final UniformLocation uniformLocation, final boolean transpose, final Matrix4f matrix4f) {
setUniformImpl(uniformLocation, u -> GL20.glUniformMatrix4(uniformLocation.getLocation(), transpose, matrix4f.asFloatBuffer()));
}
public static void setUniformMatrix4(final UniformLocation uniformLocation, final boolean transpose, final FloatBuffer matrix4fFloatBuffer) {
setUniformImpl(uniformLocation, u -> GL20.glUniformMatrix4(uniformLocation.getLocation(), transpose, matrix4fFloatBuffer));
}
public static void setUniform(final UniformLocation uniformLocation, final float value) {
setUniformImpl(uniformLocation, u -> GL20.glUniform1f(uniformLocation.getLocation(), value));
}
public static void setUniform(final UniformLocation uniformLocation, final int value) {
setUniformImpl(uniformLocation, u -> GL20.glUniform1i(uniformLocation.getLocation(), value));
}
private static void setUniformImpl(final UniformLocation uniformLocation, final Consumer<UniformLocation> consumer) {
Program oldProgram = Program.getUsing();
for (Program program : Program.getPrograms()) {
if (program.usesUniform(uniformLocation)) {
program.use();
consumer.accept(uniformLocation);
}
}
if (oldProgram != null) {
oldProgram.use();
}
}
}
Да, это прекрасно, почему вы думаете, что есть проблема? – assylias
@assylias Поскольку я не уверен, что именно так следует использовать lambdas, 'Consumer' обычно потребляет 'T'. Однако в моем случае 'u' я передаю, не используется. Я мог бы подумать, что мне нужно что-то, что ничего не потребляет и ничего не производит? –
skiwi
@Downvoter: Пожалуйста, уточните, почему. – skiwi