SlideShare une entreprise Scribd logo
1  sur  15
C++のビルド高速化



             2013/04/08
      Aiming大阪スタジオ
              後藤 文典
概要
• make、コンパイル、リンクのphaseを短くする為
  のツールや小技、手法についてを解説していき
  ます
• ※環境について
 – 以下の環境で測定しました(ccacheを除く)
    • Core i5 2500S
    • 2年前頃の2.5inchHDD
  • Windows8 & MinGW4.7.2
  • VMWare & Ubuntu12.10 & gcc4.8.0
make
• 並列化オプション
 – make –j[N]
 – ソースを並列にコンパイルする
  • ○CPUのコア数が多い程並列度を上げられる
  • 注)使用メモリがコンパイル数分必要になる
      – templateを駆使したソースだと結構メモリが必要
コンパイル(1/3)(ccache)
• コンパイル時のobjファイルをキャッシュする
 – ○リコンパイル時にコンパイルをスキップ
 – ○Makefileを汚さない
    • チーム開発中でも単独で導入できる
 – ○リビルド時に効果を発揮
 – 注)キャッシュミス時は尐し遅くなる
計測結果




• Gerritトリガビルドに導入したのはかなり効果あった
   – max cache sizeは、総objサイズの4倍あれば良いと思う
      • 過去のソースをキャッシュしてもしょうがない
      • 全書き換えパターン & 複数ブランチ作業を考えて
コンパイル(2/3)(プリコンパイル
       ヘッダ)
• プリコンパイル後のヘッダファイルをincludeする
 – ○単にincludeより速い
 – ○コンパイル時の使用メモリが減るので、並列度を上げや
   すい
 – ×プリコンパイルヘッダのプリコンパイル時間がプラス
 – 注)1つしか使用出来ない
 – 注)対象ヘッダはスリムに保つ必要がある
    • 余り大きいとプリコンパイルヘッダ自体が重くなる
計測結果(使用メモリとコンパイル時
         間)




• STLやboostをincludeして計測                // hoge.cpp
  – メモリはtime                           #include “stdafx.h”
    時間は/usr/bin/time –f “%M KB”
  注)赤丸の箇所が一応の目安?                  // stdafx.h
                                  #include <vector>
     →STL一式とboostを1、2個includeした辺り #include <list>
     →あまり詰め込まず、主要ヘッダだけ            ...
        プリコンパイル対象にするのが良さげ
コンパイル(3/3)(PImplイディオム)

• ヘッダの依存関係を減らす
#include “stack.h“                               #pragma once
// 他ソースでStackを使う時vectorが要らな                      class Stack {
い                                                public:
#include <vector>                                     Stack();
class Stack::Impl {                                   ~Stack();
public:                                               void push(int n);
      void push(int n) { v.push_back(n); }            int pop();
      int pop() {
           int n = v.back();                     private:
           v.pop_back();                              class Impl;
           return n;                                  Impl *impl;
      }                                          };
private:
  std::vector<int> v;
};

Stack::Stack()
 : impl(new Stack::Impl()) {}
Stack::~Stack()         { delete impl; }
void Stack::push(int n) { impl->push(n); }
int Stack::pop()       { return impl->pop(); }
リンク(Dynamic Link Library)

• リンク時間を減らす
• フリーのゲームエンジンIrrlichtをリンクしてみた
 – Windows8 & MinGW4.7.2
    • StaticLib時のリンク時間7.8秒 → DynamicLib時の0.8秒
    • g++ -shared –c mydll.cpp –o mydll.dll –Wl,--out-implib,libmydll.lib
 – Linux & gcc4.8環境
    • StaticLib時のリンク時間2.2秒 → DynamicLib時の0.9秒
    • g++ -shared –c mydll.cpp –o libmydll.so

 ※尐なくともGCCではdeclspec(dllexport | dllimport) _stdcall要らなかった
    • Makefileの書き換えだけでStaticLib、DynamicLibを切り替えられた
 注)dll地獄に注意
まとめ


– ボトルネック解決案やツールは大抵出そろってる
 • ボトルネックを探ればビルド時間減らせる
– 枯れた部分はLibに追い出す
 • リンク時間減らせる


※環境一式をmakeするのも良いかもしれない
参考URL

• ccache
   – http://ccache.samba.org/
• Irrlicht
   – http://irrlicht.sourceforge.net/
ありがとうございました

Contenu connexe

Tendances

いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例Fixstars Corporation
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
シェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングシェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングSho Hosoda
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!Unity Technologies Japan K.K.
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?京大 マイコンクラブ
 
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unity Technologies Japan K.K.
 
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGAAn Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGALeapMind Inc
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpsonickun
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングKohsuke Yuasa
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターンMoriharu Ohzu
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニックGenya Murakami
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理Norishige Fukushima
 

Tendances (20)

いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
シェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングシェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチング
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
GPU最適化入門
GPU最適化入門GPU最適化入門
GPU最適化入門
 
VerilatorとSystemC
VerilatorとSystemCVerilatorとSystemC
VerilatorとSystemC
 
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
 
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGAAn Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターン
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニック
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 

En vedette

海外ゲーム技術勉強会#1 OGRE3D
海外ゲーム技術勉強会#1 OGRE3D海外ゲーム技術勉強会#1 OGRE3D
海外ゲーム技術勉強会#1 OGRE3DKazuhisa Minato
 
マルチプラットフォーム開発導入
マルチプラットフォーム開発導入マルチプラットフォーム開発導入
マルチプラットフォーム開発導入Daisuke Nikura
 
C++によるソート入門
C++によるソート入門C++によるソート入門
C++によるソート入門AimingStudy
 
音声合成ライブラリ「AquesTalk」の紹介
音声合成ライブラリ「AquesTalk」の紹介音声合成ライブラリ「AquesTalk」の紹介
音声合成ライブラリ「AquesTalk」の紹介K Moneto
 
Ogre3d 基礎
Ogre3d 基礎Ogre3d 基礎
Ogre3d 基礎kw
 
cocos2d-xの概要とこれまでの進化・これからの展開
cocos2d-xの概要とこれまでの進化・これからの展開cocos2d-xの概要とこれまでの進化・これからの展開
cocos2d-xの概要とこれまでの進化・これからの展開Tomoaki Shimizu
 
C++11とゲーム製作
C++11とゲーム製作C++11とゲーム製作
C++11とゲーム製作uchan_nos
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理DADA246
 
3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメ3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメinfinite_loop
 
[学内勉強会]C++11とdirectxライブラリ
[学内勉強会]C++11とdirectxライブラリ[学内勉強会]C++11とdirectxライブラリ
[学内勉強会]C++11とdirectxライブラリShota Homma
 
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料博文 斉藤
 
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」博文 斉藤
 
Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例tecopark
 
3D描画基礎知識
3D描画基礎知識3D描画基礎知識
3D描画基礎知識AimingStudy
 
大人の分散レンダリング
大人の分散レンダリング大人の分散レンダリング
大人の分散レンダリングMonta Yashi
 
mruby を C# に 組み込んでみる
mruby を C# に 組み込んでみるmruby を C# に 組み込んでみる
mruby を C# に 組み込んでみるRyosuke Akiyama
 

En vedette (16)

海外ゲーム技術勉強会#1 OGRE3D
海外ゲーム技術勉強会#1 OGRE3D海外ゲーム技術勉強会#1 OGRE3D
海外ゲーム技術勉強会#1 OGRE3D
 
マルチプラットフォーム開発導入
マルチプラットフォーム開発導入マルチプラットフォーム開発導入
マルチプラットフォーム開発導入
 
C++によるソート入門
C++によるソート入門C++によるソート入門
C++によるソート入門
 
音声合成ライブラリ「AquesTalk」の紹介
音声合成ライブラリ「AquesTalk」の紹介音声合成ライブラリ「AquesTalk」の紹介
音声合成ライブラリ「AquesTalk」の紹介
 
Ogre3d 基礎
Ogre3d 基礎Ogre3d 基礎
Ogre3d 基礎
 
cocos2d-xの概要とこれまでの進化・これからの展開
cocos2d-xの概要とこれまでの進化・これからの展開cocos2d-xの概要とこれまでの進化・これからの展開
cocos2d-xの概要とこれまでの進化・これからの展開
 
C++11とゲーム製作
C++11とゲーム製作C++11とゲーム製作
C++11とゲーム製作
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
 
3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメ3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメ
 
[学内勉強会]C++11とdirectxライブラリ
[学内勉強会]C++11とdirectxライブラリ[学内勉強会]C++11とdirectxライブラリ
[学内勉強会]C++11とdirectxライブラリ
 
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
OSC・シェルのプロが語る『make を使ったデータ処理。』 【make 教】 - OSC2015 Tokyo/Spring 発表資料
 
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
 
Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例
 
3D描画基礎知識
3D描画基礎知識3D描画基礎知識
3D描画基礎知識
 
大人の分散レンダリング
大人の分散レンダリング大人の分散レンダリング
大人の分散レンダリング
 
mruby を C# に 組み込んでみる
mruby を C# に 組み込んでみるmruby を C# に 組み込んでみる
mruby を C# に 組み込んでみる
 

Similaire à C++のビルド高速化について

Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Ransui Iso
 
OCaml でデータ分析
OCaml でデータ分析OCaml でデータ分析
OCaml でデータ分析Akinori Abe
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門Yosuke Onoue
 
Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)洋史 東平
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelereaseShiqiao Du
 
第2回勉強会スライド
第2回勉強会スライド第2回勉強会スライド
第2回勉強会スライドkoturn 0;
 
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSPさわってみようTOPPERS/SSP
さわってみようTOPPERS/SSPNSaitoNmiri
 
コンテナ情報交換会2
コンテナ情報交換会2コンテナ情報交換会2
コンテナ情報交換会2Masahide Yamamoto
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門Shiqiao Du
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8y_taka_23
 
pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話Akio OBATA
 
Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)Takahiro Harada
 
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門伸男 伊藤
 
Boost.Flyweight
Boost.FlyweightBoost.Flyweight
Boost.Flyweightgintenlabo
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドToru Tamaki
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス5mingame2
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみようYou&I
 

Similaire à C++のビルド高速化について (20)

Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
 
OCaml でデータ分析
OCaml でデータ分析OCaml でデータ分析
OCaml でデータ分析
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
C#勉強会
C#勉強会C#勉強会
C#勉強会
 
Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelerease
 
第2回勉強会スライド
第2回勉強会スライド第2回勉強会スライド
第2回勉強会スライド
 
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSPさわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
 
コンテナ情報交換会2
コンテナ情報交換会2コンテナ情報交換会2
コンテナ情報交換会2
 
Objc lambda
Objc lambdaObjc lambda
Objc lambda
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
 
Altanative macro
Altanative macroAltanative macro
Altanative macro
 
pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話
 
Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)
 
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
 
Boost.Flyweight
Boost.FlyweightBoost.Flyweight
Boost.Flyweight
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみよう
 

Plus de AimingStudy

Kick Off Technical Artist & ShaderFx - テクニカルアーティストと ShaderFXのお話
Kick Off Technical Artist & ShaderFx - テクニカルアーティストと ShaderFXのお話Kick Off Technical Artist & ShaderFx - テクニカルアーティストと ShaderFXのお話
Kick Off Technical Artist & ShaderFx - テクニカルアーティストと ShaderFXのお話AimingStudy
 
デザイナーがMELスクリプトを書いて工数削減した話
デザイナーがMELスクリプトを書いて工数削減した話デザイナーがMELスクリプトを書いて工数削減した話
デザイナーがMELスクリプトを書いて工数削減した話AimingStudy
 
剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題AimingStudy
 
ゲームエンジンとMVC
ゲームエンジンとMVCゲームエンジンとMVC
ゲームエンジンとMVCAimingStudy
 
Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築AimingStudy
 
AWSではじめるお手軽オンラインゲーム開発
AWSではじめるお手軽オンラインゲーム開発AWSではじめるお手軽オンラインゲーム開発
AWSではじめるお手軽オンラインゲーム開発AimingStudy
 
SVN経験者のためのGIT入門
SVN経験者のためのGIT入門SVN経験者のためのGIT入門
SVN経験者のためのGIT入門AimingStudy
 
Flashをcocos2dxで再生
Flashをcocos2dxで再生Flashをcocos2dxで再生
Flashをcocos2dxで再生AimingStudy
 
1日で始めるglsl
1日で始めるglsl1日で始めるglsl
1日で始めるglslAimingStudy
 
Adobe scoutの紹介
Adobe scoutの紹介Adobe scoutの紹介
Adobe scoutの紹介AimingStudy
 

Plus de AimingStudy (11)

Kick Off Technical Artist & ShaderFx - テクニカルアーティストと ShaderFXのお話
Kick Off Technical Artist & ShaderFx - テクニカルアーティストと ShaderFXのお話Kick Off Technical Artist & ShaderFx - テクニカルアーティストと ShaderFXのお話
Kick Off Technical Artist & ShaderFx - テクニカルアーティストと ShaderFXのお話
 
デザイナーがMELスクリプトを書いて工数削減した話
デザイナーがMELスクリプトを書いて工数削減した話デザイナーがMELスクリプトを書いて工数削減した話
デザイナーがMELスクリプトを書いて工数削減した話
 
剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題
 
ゲームエンジンとMVC
ゲームエンジンとMVCゲームエンジンとMVC
ゲームエンジンとMVC
 
Unityと.NET
Unityと.NETUnityと.NET
Unityと.NET
 
Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築
 
AWSではじめるお手軽オンラインゲーム開発
AWSではじめるお手軽オンラインゲーム開発AWSではじめるお手軽オンラインゲーム開発
AWSではじめるお手軽オンラインゲーム開発
 
SVN経験者のためのGIT入門
SVN経験者のためのGIT入門SVN経験者のためのGIT入門
SVN経験者のためのGIT入門
 
Flashをcocos2dxで再生
Flashをcocos2dxで再生Flashをcocos2dxで再生
Flashをcocos2dxで再生
 
1日で始めるglsl
1日で始めるglsl1日で始めるglsl
1日で始めるglsl
 
Adobe scoutの紹介
Adobe scoutの紹介Adobe scoutの紹介
Adobe scoutの紹介
 

C++のビルド高速化について