メインメニューを開く

差分

Xamarin.MacでNSOpenGLViewをRetina Displayに対応させる

243 バイト追加, 2017年12月21日 (木) 07:23
[[Xamarin.Mac]]のNSOpenGLViewを[[Retina Display]]に対応させる。
==実装1=====NSOpenGLViewを貼る===
Interface Builder でNSOpenGLViewを継承したカスタムコントロールを貼る。
既にあるものをRetina対応させる場合は読み飛ばしてよい。
*[[Xamarin.Mac/NSOpenGLViewを使う]]も参照。」も参照。
===Retina対応を有効にする===Interface Builder のアトリビュートインスペクターで「Support Hi-Res BAcking」の項目にチェックを入れる。Backing」の項目にチェックを入れる。
これでNSOpenGLViewはRetinaに対応する。
[[ファイル:NSOpenGLView Hi-Resolution-Backing.png|none]]
===Retinaを考慮して描画する===
Retinaを有効にした場合はRetinaを考慮せず描画処理を行うとグダグダになるので注意しよう。
図形への影響は小さいが文字列の場合はさらに悲惨なことになるので特に注意すること。図形への影響は小さいが文字列の場合は悲惨なことになるので特に注意すること。
この例ではConvertRectToBackingメソッドとGL.Viewportでサイズをあわせている。
Retina環境で変数の中身を見ると以下のような感じ。非Retina環境では同じ数字になる。
* this.Bounds
*: {X=0,Y=0,Width=300,Height=160}
* this.ConvertRectToBacking(this.Bounds)
*: {X=0,Y=0,Width=600,Height=320}
Retinaと非Retinaでマルチディスプレイした状態でウインドウを移動してみると効果のほどがよくわかる。
<source lang="csharp">
匿名利用者