OGLplus  (0.59.0) a C++ wrapper for rendering APIs

oalplus/005_hello_world.cpp

Copyright Matus Chochlik. Distributed under the Boost Software License, Version 1.0. See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt

#include <oalplus/al.hpp>
#include <iostream>
#include <thread>
auto main(int argc, char** argv) -> int {
using namespace eagine;
using namespace eagine::oalp;
alc_api alc;
if(ok device{alc.open_device()}) {
auto cleanup_dev = alc.close_device.raii(device);
const auto context_attribs = (alc.mono_sources | 1) +
(alc.stereo_sources | 1) +
(alc.sync | false);
if(ok context{alc.create_context(device, context_attribs.get())}) {
auto cleanup_ctx = alc.destroy_context.raii(device, context);
alc.make_context_current(context);
auto reset_ctx = alc.make_context_current.raii();
al_api al;
alut_api alut;
if(alut.init(&argc, argv)) {
auto do_exit = alut.exit.raii();
auto opt_src = al.gen_sources();
auto del_src = al.delete_sources.raii_opt(opt_src);
auto opt_buf = alut.create_buffer_hello_world();
auto del_buf = al.delete_buffers.raii_opt(opt_buf);
if(opt_src && opt_buf) {
source_name src = extract(opt_src);
buffer_name buf = extract(opt_buf);
al.listener_i(al.position, 0, 0, 0);
al.listener_i(al.velocity, 0, 0, 0);
al.listener_f(al.gain, 5.F);
al.source_f(src, al.position, 0.F, 0.F, 1.F);
al.source_f(src, al.velocity, 0.F, 0.F, 0.F);
al.source_queue_buffers(src, buf);
al.source_play(src);
std::this_thread::sleep_for(std::chrono::seconds(2));
al.source_unqueue_buffers(src, buf);
}
}
}
}
return 0;
}
Common code is placed in this namespace.
Definition: eagine.hpp:21
static constexpr auto extract(api_result_value< Result, api_result_validity::never > &) noexcept -> Result &
Overload of extract for api_result_value.
Definition: c_api_wrap.hpp:270
Non-owning wrapper for C-API opaque handle types.
Definition: handle.hpp:26
basic_alc_api< alc_api_traits > alc_api
Alias for the default instantation of basic_alc_api.
Definition: alc_api_fwd.hpp:20
Value typically wrapping function call result and success indicator.
Definition: extract.hpp:128
basic_alut_api< alut_api_traits > alut_api
Alias for the default instantation of basic_alut_api.
Definition: alut_api_fwd.hpp:20
basic_al_api< al_api_traits > al_api
Alias for the default instantation of basic_al_api.
Definition: al_api_fwd.hpp:20
AL-related code is placed in this namespace.
Definition: oalplus.hpp:11

Copyright © 2015-2021 Matúš Chochlík.
<chochlik -at -gmail.com>
Documentation generated on Tue Apr 13 2021 by Doxygen (version 1.8.17).