VertexAttribPointerの話

最近のOpenGLではGLSLで整数型が使えるんですよね。
怪しげな条件分岐を書くために頂点データに整数型をぶち込んでたわけです。
そしたらswitchで 0 か それ以外 にしか分岐しないわけです。いろいろ調べてみたら、

整数型を設定する場合には glVertexAttribIPointer を使う必要があったわけですね。

完。

subversionリポジトリからの変換

Twitterでこんなことをつぶやいたら入門Mercurialの著者の方にいろいろ教えてもらいました。Twitterスゴイネ!

Twitterでのやりとり

:left

REVMAPとは

http://mercurial.selenic.com/wiki/ConvertExtension

REVMAP is a a simple text file that maps each source commit ID to the destination ID for each revision. Unless specified, it defaults to the .hg/shamap in the destination directory. This file is automatically created and updated on each commit copied, its purpose is to track which commits were already imported and which were not - and thanks to it allow to resume interrupted import and to make incremental updates. It is important to note that this REVMAP file is not copied when you a clone a repository. So you need to manually move it over if you are going to make incremental updates on a clone of the original import repository.

Subversionのリビジョン番号とMercurialのリビジョン(ハッシュ)を対応付けているファイル。最初にconvertしたときのこのファイルが失われていた、かつbitbucketのリポジトリに手前成果が入っているのでたいそう面倒な状態になっている。

結局

REVMAPを書き直してconvertし直したものを「IMPORT」、現在のbitbucketを「MASTER」とし、pull/push/mergeでやるのが良さそう。

最初のconvertリポジトリが残っていれば、REVMAP書き直し量なども少なくて済んだと思われる。

実際にやってみた

そんなに面倒じゃなかった。やったね!

テンプレートを用意するのが面倒だったので、logをsedとsortで整形して矩形コピペでREVMAPを直した後convertして全てがうまくいった。
自分が修正を加えた後は、REVMAPの最終行(以前のconvert時の最新svnリビジョン)に対応するハッシュ値を書き直す必要が出たけど、そんなに修正加えてないからなんとかなる感じ。

FreeGLUTとGLEWのVC設定バッチ

設定といっても、パスが通っている場所にシンボリックリンク貼るだけなんですけどね。

ディレクトリパスとか調べるのが面倒になる未来が見えたので適当にまとめておく。

いろいろなサイトではDLLまでシステムディレクトリにぶちこんでたりするけど、僕はさすがにそういう気にはならないね……(何のDLL必要か忘れることが頻発しそうだし)

バッチファイル本体

mklink "%~1\Include\gl\freeglut.h" "%~2\include\GL\freeglut.h"
mklink "%~1\Include\gl\freeglut_std.h" "%~2\include\GL\freeglut_std.h"
mklink "%~1\Include\gl\freeglut_ext.h" "%~2\include\GL\freeglut_ext.h"
mklink "%~1\Include\gl\glut.h" "%~2\include\GL\glut.h"
mklink "%~1\Lib\freeglut.lib" "%~2\lib\x86\freeglut.lib"
mklink "%~1\Lib\freeglut_static.lib" "%~2\lib\x86\freeglut_static.lib"
mklink "%~1\Include\gl\glew.h" "%~3\include\GL\glew.h"
mklink "%~1\Include\gl\wglew.h" "%~3\include\GL\wglew.h"
mklink "%~1\Include\gl\glxew.h" "%~3\include\GL\glxew.h"
mklink "%~1\Lib\glew32.lib" "%~3\lib\glew32.lib"
mklink "%~1\Lib\glew32mx.lib" "%~3\lib\glew32mx.lib"
mklink "%~1\Lib\glew32mxs.lib" "%~3\lib\glew32mxs.lib"
mklink "%~1\Lib\glew32s.lib" "%~3\lib\glew32s.lib"

実行例

> gl_mklink.bat "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A" C:\Library\freeglut C:\Library\glew

Mercurialでpushとpullのデフォルトパスを別にする

僕は、pushするときには1回ローカルの別レポジトリをかませる形の運用をしています。こうすることでbitbucketが鯖落ちしたり唐突にbitbucketのデータが消えたりしたときに備えているつもりです。
pushとpullのデフォルトパスにそれぞれ別のパスを指定することができます、という備忘録的な記事です。
hgrcを以下のようにすれば良いです。

[paths]
default = ssh://hg@bitbucket.org/Sukai/repository
default-path = G:\hgrepo\repository

リンク設定

追加ライブラリだけ静的リンクしてQtライブラリは動的リンクしたいときはproファイルのライブラリ設定部分を以下のようにする(boost.threadとboost.chronoを静的リンクしている)。

# .pro file
unix:LIBS += -Wl,-Bstatic -lboost_thread-mt -lboost_chrono-mt -Wl,-Bdynamic

最後の引数の後ろにQtライブラリの指定が入るのでQtライブラリは動的リンクされる。付け忘れると普通はリンク時にエラー吐かれるので注意。