int main() { auto engine = std::make_unique<yae::sdl_engine>(); auto window = engine->create_simple_window(); auto cv = yae::clipping_volume{ -8.0f, 8.0f, -6.0f, 6.0f, 1.0f, -1.0f }; window->close_when_keydown(); auto rwop = SDL_RWFromFile("smiley.png", "rb"); auto hero_image = IMG_LoadPNG_RW(rwop); auto pixels = (GLubyte*)hero_image->pixels; auto width = hero_image->w; auto height = hero_image->h; auto hero_texture = std::make_shared<yae::texture>(pixels, width, height); yae::buffer_object_builder<float> b({ -50.0f, -50.0f, 50.0f, -50.0f, 50.0f, 50.0f, -50.0f, 50.0f }); auto multi_hero = std::make_shared<yae::geometry<float>>(b.get_size() / 2, 2, GL_QUADS); multi_hero->set_vertex_positions(b.build()); multi_hero->set_vertex_tex_coords(b.build()); auto node = std::make_shared<yae::geometry_node<float>>(multi_hero); auto root = std::make_shared<yae::group>(); root->add(node); auto prog = yae::texture_program::create(); prog->set_texture(hero_texture); auto scene = std::make_shared<yae::rendering_scene>(); auto cam = std::make_shared<yae::parallel_camera>(cv); auto bg_color = yae::color4f{ 0.0f, 0.0f, 0.0f, 0.0f }; auto clear_viewport_cb = yae::clear_viewport_callback(bg_color, scene->get_viewport()); auto cre = std::make_shared<yae::custom_rendering_element>("clear_viewport", clear_viewport_cb); auto nre = std::make_shared<yae::node_rendering_element>("smiley_canvas", root, prog, cam); scene->add_element(cre); scene->add_element(nre); scene->associate_camera<yae::rendering_scene::fit_all_adapter>(cam, window.get(), yae::viewport_relative{ 0.0f, 0.0f, 1.0f, 1.0f }); window->set_render_callback([&](yae::rendering_context& ctx) { cam->rotate_z(0.5); }); window->add_scene(scene); engine->run(window.get()); return 0; }
static int init_output_device(phastream_t *as, float rate, unsigned channels, unsigned format) { OSStatus err = noErr; ca_dev *cadev = (ca_dev *) as->drvinfo; set_data_source(get_audiodeviceid(cadev->outputID), 0, get_datasourceid(cadev->outputID)); init_audio_unit(&cadev->outputAU); set_played_format(cadev->outputAU, rate, channels, format); set_audio_unit_device(cadev->outputAU, get_audiodeviceid(cadev->outputID)); set_render_callback(cadev->outputAU, output_renderer, as); err = AudioUnitInitialize(cadev->outputAU); if (err) { DBG_DYNA_AUDIO_DRV ("!!CoreAudio: AudioUnitInitialize-SF=%4.4s, %ld\n", (char*)&err, err); return -1; } return 0; //OK }