SlideShare a Scribd company logo
GLFW OPENGL/ES を使った
GUI フレームワーク
HIRA_KUNI_45 の略歴










バイク乗り、整備、エンジンOH
主にゲーム関係の仕事に従事
ゲームボーイ、ファミコン、セガサターン、プレイス
テーションなど、コンシューマープラットホームなど
アナログ、デジタルなどハードウェアーの設計、製作、
論理合成、基板のアートワークなど
金属加工(旋盤、フライス)、溶接
基本何でもやるけど化学はあんましやった事無い
C++はごく普通の練度
未だにQuadra950を所有してるけど、Appleには関心が
殆ど無い
C++11やBOOSTなど


石橋を叩いて渡る傾向で、新しい物には直ぐ
に飛びつかない

新しい物を吸収したいが、難しい部分
も・・・
 当たり障りの無い部分のみ使っている
 多くは、コレ何に使うんだ?ポカーンな感じ
 面倒そうなので、従来の方法を使ったり・・
 まぁボチボチ

OPENGL/ES
SGIのワークステーション時代から使っている
 OpenGL love!
 Viva 赤本
 高度なレンダリングには、練度が足りないので
何とかしたくて勉強中
※シェーダーなど
 Renderman のシェーダーなら多少書ける
 DirectXは?だと思ってる
※ms 社のOpenGLエバンジェリストに聞いた事

GLFW3とは?
マルチプラットホームのフレームワーク
※Windows、Linux、OS-X
※ライセンスは unmodified zlib/libpng
license
 必要最小限の機能、シンプルな構造
 サンプルもあり、理解しやすい
 glut の貧弱な部分を強化した感じ
※glutはメンテナンスされていない

GUIフレームワークの開発
他のオープンソースのGUIとはちょっと違う
 リアルタイム性を重視
 OpenGL/ESとマッチ
 GUIの構造や構成がC++に向いている
 かなり前から少しづつ構築している為、最近の
流行とは逆行する部分も・・・
 実装は、C++11やboostの機能を的確に利用出
来ていない
 組み込みでも使える構成
※組み込みでは iostream には注意を要す

利用しているオープンソース
GLFW3
 GLEW
 Freetype2
 OpenAL
 libz、libpng、libjpeg、openjpeg
 Mad(mp3)、AAC
 Mupdf、jbig2dec
 bullet(physics)

GITHUB/E-MAIL/TWITTER
https://github.com/hirakuni45/glfw3_app
hira@rvf-rc45.net
@hira_kuni_45
全体の構成(COMMON)
core
 gl_fw
 img_io
 snd_io
 widgets
 utils
 minizip
 開発中(mdf、collada)

CORE
機種依存性が高いコード
 GLFW3をラップしたインターフェース
 Freetype2とのインターフェース
※他のフォントライブラリーとインター
フェース(VITA、PS3)
 漢字のFEP関係のインターフェース(開発
中)
 入力デバイスのラッパー(GLFW3)

GL_FW
OpenGL/ESを使った描画クラスなど
 OpenGL C++ ラッパー
 フォントの描画、管理
 画像の管理(モーションオブジェクト)
 ライト(開発中)
 シーングラフ(開発中)
※以前に作ったけど、イマイチなので捨てた
 シェーダー(開発中)

IMG_IO
色、画像を扱う基本クラス
 フルカラー、グレースケール、インデックスド
カラー、アルファチャンネル
 描画(ペイント機能)、拡大縮小など
 画像フォーマットの出し入れ
※png、bmp、jpeg、openjpeg、tga、dds
 他、小物など色々
 他のライブラリーに移りたい欲求もあるけど、
修正範囲が大きいので当面利用する

SND_IO
単音、ストリームなどを扱うクラス
 定位(OpenAL)
 音楽フォーマットの出し入れ
※mp3、aac、wav
 サンプリング周波数、チャネル、解像度
 他、小物など色々
 OpenALとの橋渡しなど

WIDGETS
GUI の部品を扱うクラス
 Widget管理
 ボタン、スライダー、フレーム、チェックボッ
クス、ラジオボタン、etc
 基本的には2次元オブジェクトの描画で行い、
シェーダーなどは使わない方針
 組み込み機器にも移植が可能な軽量コンパクト
設計
※モーションオブジェクトクラス

UTILS
頂点、行列など線形代数関係
 ファイルI/Oクラス
 文字列操作
 ファイル情報、ディレクトリー情報取得関係
※boostを使うべき?
 プリファレンス(XMLは嫌い)
 シーン制御、シーン管理関係
 他、小物

GLFW3の改造
ドラッグ・アンド・ドロップ
※Windowsのみ
 FEP関係のメッセージ(予定)

開発環境
MinGW(MSYS)
※以前はcygwin64を使ってた
 make
 CMake
 emacs
 VisualStudioでは試していないけど動くだろう
 gcc が好き!
 将来的にはclang、LLVMに移行予定

GUIフレームワークに期待される事
日常と非日常な処理
 ありがちな処理は、簡単な設定だけで可能
 複雑で特殊な処理を実装することが可能
 拡張が容易
 予想できるスマートな挙動
 シンプルな構造(※)




マウス、ジョイステック、タッチパッドなど
でも操作が可能(今後の課題)
次世代のGUI?







マウスでも、タッチ操作でも可能なポリシー
Windows、OS-X、X11(Qt)の操作はある程度継承
最適な操作ポリシーは、アプリケーションによ
る・・
「ユーザーインターフェースガイドラインを守れば
何もかも上手く行く」幻想にすぎない
どうすれば最適なのか解答は無い、ケースバイケー
ス
CPUもグラフィックスも十分高速なので、もっとヘ
ビーなGUIを考えても良いかもしれない(見た目だ
けの問題ではなく)
アプリケーションの構造
メッセージを使わない
 毎フレーム直列同期処理
 ゲーム向きの構造
 シーン毎の処理
 initialize
 update
 render
 destroy

実際のアプリケーション
Spinv スペースインベーダーエミュレー
ター
 Player 音楽プレイヤー
 Image 画像ビューアー
 Bmc ビットマップ変換ツール
 Pmdv PMDビューアー

IMAGE アプリケーション
application main

Widget_director

Widget_frame

Widget_button

Widget_check

widget_frame

Widget_check

Widget_frame

Widget_image

Widget_terminal
WIDGET の制御


選択
 押した瞬間(positive)
 押している(level)
 離した瞬間(negative)



移動
 押しながら移動(ドラッグ)



リサイズ
 押しながらリサイズ(右ボタン)
基本制御プロパティ
表示・非表示(enable)
 停止(stall)
 位置固定
 水平リサイズ
 垂直リサイズ
 サイズ固定

実際のソースコード
アプリケーション・コンテキスト
namespace app {
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
/*!
@brief アプリケーション・共有リソース
*/
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
struct core {
al::sound sound_;
gui::widget_director

widget_director_;

sys::preference

preference_;

core() { }
};
}
メイン
#include "main.hpp"
#include “img_main.hpp"
typedef app::img_main
static
static
static
static

const
const
const
const

start_app;

char* window_key_ = { "application/window" };
char* app_title_ = { "Image" };
vtx::spos start_size_(1024, 768);
vtx::spos limit_size_(800, 600);
int main(int argc, char** argv)
{
gl::create_glcore();
gl::IGLcore* igl = gl::get_glcore();
// カレントパスを生成
std::string tmp;
utils::convert_delimiter(argv[0], '¥¥', '/', tmp);
std::string pref;
utils::get_file_base(tmp, pref);
pref += ".pre";
std::string path;
utils::get_file_path(tmp, path);
if(!igl->initialize(path)) {
return -1;
}

utils::director<app::core> director;
director.at().preference_.load(pref);
vtx::srect rect(vtx::spos(10, 40), start_size_);
if(!director.at().preference_.load_rect(window_key_, rect)) {
//
std::cout << "Load rect error..." << std::endl;
}
if(!igl->setup(rect, app_title_, false)) {
return -1;
}
igl->set_limit_size(limit_size_);
director.at().sound_.initialize(16);
director.at().widget_director_.initialize();
director.install_scene<start_app>();
while(!igl->get_exit_signal()) {
igl->service();
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
gl::glColor(img::rgbaf(1.0f));
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,
GL_MODULATE);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glDisable(GL_DEPTH_TEST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
director.render();
igl->flip_frame();
director.at().sound_.service();
}
// プログラム終了の廃棄
director.erase_scene();
director.render();

{
vtx::srect rect(igl->get_locate(), igl->get_size());
director.at().preference_.save_rect(window_key_, rect);
}
director.at().preference_.save(pref);
igl->destroy();
gl::destroy_glcore();
}
アプリケーション・定義
namespace app {
class img_main : public utils::i_scene {
utils::director<core>&

director_;

public:
img_main(utils::director<core>& d) : director_(d)
virtual ~img_main() { }
void initialize();

void update();
void render();
void destroy();

};
}

{}
アプリケーション初期化
void img_main::initialize()
{
using namespace gui;
widget_director& wd = director_.at().widget_director_;
{ // 画像ファイル表示用フレーム
widget::param wp(vtx::srect(30, 30, 256, 256));
widget_frame::param wp_;
wp_.plate_param_.set_caption(24);
frame_ = wd.add_widget<widget_frame>(wp, wp_);
}
{ // 画像ファイル表示イメージ
widget::param wp(vtx::srect(0, 0, 256, 256), frame_);
widget_image::param wp_;
image_ = wd.add_widget<widget_image>(wp, wp_);
image_->set_state(widget::state::CLIP_PARENTS);
image_->set_state(widget::state::RESIZE_ROOT);
image_->set_state(widget::state::MOVE_ROOT, false);
}
アプリケーション初期化
{ // 機能ツールパレット
widget::param wp(vtx::srect(10, 10, 130, 300));
widget_frame::param wp_;
tools_ = wd.add_widget<widget_frame>(wp, wp_);
tools_->set_state(widget::state::SIZE_LOCK);
}
{ // ファイラー起動ボタン
widget::param wp(vtx::srect(10, 10, 100, 40), tools_);
widget_button::param wp_("file");
open_ = wd.add_widget<widget_button>(wp, wp_);
}
// プリファレンスの取得
sys::preference& pre = director_.at().preference_;
if(filer_) {
frame_->load(pre);
}
}
アプリケーション UPDATE
void amg_main::update()
{
gui::widget_director& wd = director_.at().widget_director_;
if(open_) {
if(open_->get_selected()) {
if(filer_) {
bool f = filer_->get_state(gui::widget::state::ENABLE);
filer_->enable(!f);
}
}
}
std::string imfn;
int id = igl->get_recv_file_id();
if(dd_id_ != id) {
dd_id_ = id;
const utils::strings& ss = igl->get_recv_file_path();
if(!ss.empty()) {
imfn = ss.back();
}
}
アプリケーション UPDATE
if(filer_) {
wd.top_widget(filer_);
if(filer_id_ != filer_->get_select_file_id()) {
filer_id_ = filer_->get_select_file_id();
imfn = filer_->get_file();
}
}
アプリケーション UPDATE
if(!imfn.empty()) {
img::img_files& imf = wd.at_img_files();
if(!imf.load(imfn)) {
dialog_->set_text("Can't decode image file:¥n '"
+ filer_->get_file() + "'");
dialog_->enable();
} else {
image_offset_.set(0.0f);
frame_->at_local_param().text_param_.text_ = imfn;
mobj_.destroy();
mobj_.initialize();
img_handle_ = mobj_.install(imf.get_image_if());
image_->at_local_param().mobj_ = mobj_;
image_->at_local_param().mobj_handle_ = img_handle_;
}
}
wd.update();
アプリケーション・レンダリング
void img_main::render()
{
director_.at().widget_director_.service();
director_.at().widget_director_.render();
}
アプリケーション廃棄
void img_main::destroy()
{
sys::preference& pre = director_.at().preference_;
if(filer_) filer_->save(pre);
if(frame_) frame_->save(pre);
if(tools_) tools_->save(pre);
if(scale_) scale_->save(pre);
}
質疑、応答
ありがとうございました

More Related Content

What's hot

メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門Atsushi Tadokoro
 
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oFメディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oFAtsushi Tadokoro
 
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望Atsushi Tadokoro
 
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Media Art II 2013  第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCvMedia Art II 2013  第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCvAtsushi Tadokoro
 
Makerの「道具」としてのカスタムLSI
Makerの「道具」としてのカスタムLSIMakerの「道具」としてのカスタムLSI
Makerの「道具」としてのカスタムLSI
Junichi Akita
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.ContextAkira Takahashi
 
プログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめようプログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめようAtsushi Tadokoro
 
UniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for UnityUniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for Unity
Yoshifumi Kawai
 
Interactive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションInteractive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションAtsushi Tadokoro
 

What's hot (9)

メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門メディア・アート II 第1回: ガイダンス openFrameworks入門
メディア・アート II 第1回: ガイダンス openFrameworks入門
 
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oFメディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
 
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
 
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Media Art II 2013  第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCvMedia Art II 2013  第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
 
Makerの「道具」としてのカスタムLSI
Makerの「道具」としてのカスタムLSIMakerの「道具」としてのカスタムLSI
Makerの「道具」としてのカスタムLSI
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
 
プログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめようプログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめよう
 
UniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for UnityUniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for Unity
 
Interactive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションInteractive Music II Processingによるアニメーション
Interactive Music II Processingによるアニメーション
 

Viewers also liked

C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
 
C++14 solve explicit_default_constructor
C++14 solve explicit_default_constructorC++14 solve explicit_default_constructor
C++14 solve explicit_default_constructorAkira Takahashi
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
Takatoshi Kondo
 
Introduction to boost test
Introduction to boost testIntroduction to boost test
Introduction to boost test
Kohsuke Yuasa
 
Boost.Timer
Boost.TimerBoost.Timer
Boost.Timermelpon
 

Viewers also liked (7)

C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
 
Boost sg msgpack
Boost sg msgpackBoost sg msgpack
Boost sg msgpack
 
C++14 solve explicit_default_constructor
C++14 solve explicit_default_constructorC++14 solve explicit_default_constructor
C++14 solve explicit_default_constructor
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
 
Introduction to boost test
Introduction to boost testIntroduction to boost test
Introduction to boost test
 
Boost.Timer
Boost.TimerBoost.Timer
Boost.Timer
 
C++14 enum hash
C++14 enum hashC++14 enum hash
C++14 enum hash
 

Similar to Glfw3,OpenGL,GUI

StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件
yaegashi
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
5mingame2
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
勝成 鈴江
 
Google Developer Day 2010 Japan: Android でリアルタイムゲームを開発する方法: リベンジ (クリス プルエット)
Google Developer Day 2010 Japan: Android でリアルタイムゲームを開発する方法: リベンジ (クリス プルエット)Google Developer Day 2010 Japan: Android でリアルタイムゲームを開発する方法: リベンジ (クリス プルエット)
Google Developer Day 2010 Japan: Android でリアルタイムゲームを開発する方法: リベンジ (クリス プルエット)
Google Developer Relations Team
 
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519Yasuhiro Ishii
 
EmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよEmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよ
Kiwamu Okabe
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
Fixstars Corporation
 
groovy 2.1.0 20130118
groovy 2.1.0 20130118groovy 2.1.0 20130118
groovy 2.1.0 20130118
Uehara Junji
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウKentarou Mukunasi
 
Displaylink : Reloaded
Displaylink : ReloadedDisplaylink : Reloaded
Displaylink : Reloaded
Masataka Kondo
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングKiwamu Okabe
 
(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について
Kazuhiro Hara
 
Unityの夕べ in Fukuoka
Unityの夕べ in FukuokaUnityの夕べ in Fukuoka
Unityの夕べ in Fukuoka
Shinobu Izumi
 
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
Hirotaka Kawata
 
about DakotagUI
about DakotagUIabout DakotagUI
about DakotagUI
Etsuji Nomura
 
【portfolio】Shota Ichikawa .pdf
【portfolio】Shota Ichikawa .pdf【portfolio】Shota Ichikawa .pdf
【portfolio】Shota Ichikawa .pdf
SHOTAICHIKAWA1
 
GREE Creators' Meetup #2 session B Manryo
GREE Creators' Meetup #2 session B ManryoGREE Creators' Meetup #2 session B Manryo
GREE Creators' Meetup #2 session B Manryo
Shiho Manryo
 
Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下
Koyo Takenoshita
 

Similar to Glfw3,OpenGL,GUI (20)

StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
 
Google Developer Day 2010 Japan: Android でリアルタイムゲームを開発する方法: リベンジ (クリス プルエット)
Google Developer Day 2010 Japan: Android でリアルタイムゲームを開発する方法: リベンジ (クリス プルエット)Google Developer Day 2010 Japan: Android でリアルタイムゲームを開発する方法: リベンジ (クリス プルエット)
Google Developer Day 2010 Japan: Android でリアルタイムゲームを開発する方法: リベンジ (クリス プルエット)
 
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
 
EmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよEmacsとGlossでお絵描きしてみるよ
EmacsとGlossでお絵描きしてみるよ
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 
groovy 2.1.0 20130118
groovy 2.1.0 20130118groovy 2.1.0 20130118
groovy 2.1.0 20130118
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ
 
Pythonでゲーム作る
Pythonでゲーム作るPythonでゲーム作る
Pythonでゲーム作る
 
Displaylink : Reloaded
Displaylink : ReloadedDisplaylink : Reloaded
Displaylink : Reloaded
 
HaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミング
 
(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について(IDEユーザのための) ClojureのEmacs開発環境について
(IDEユーザのための) ClojureのEmacs開発環境について
 
Unityの夕べ in Fukuoka
Unityの夕べ in FukuokaUnityの夕べ in Fukuoka
Unityの夕べ in Fukuoka
 
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
 
about DakotagUI
about DakotagUIabout DakotagUI
about DakotagUI
 
Runtime c++editing
Runtime c++editingRuntime c++editing
Runtime c++editing
 
【portfolio】Shota Ichikawa .pdf
【portfolio】Shota Ichikawa .pdf【portfolio】Shota Ichikawa .pdf
【portfolio】Shota Ichikawa .pdf
 
GREE Creators' Meetup #2 session B Manryo
GREE Creators' Meetup #2 session B ManryoGREE Creators' Meetup #2 session B Manryo
GREE Creators' Meetup #2 session B Manryo
 
Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下
 

Recently uploaded

ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 

Recently uploaded (14)

ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 

Glfw3,OpenGL,GUI