サブディスプレイをつないでRenderer(EX9)のFullscreenを1にすれば、OBSのウィンドウキャプチャでストリーミング配信できる。
PHP7.4でGLUT(FFI extention)
PHP 7.4からFFIが使えるようになったとのことでGLUTを試してみました。
※php.iniで「extension=ffi」しておきます。
<?php
require("gl.php");
require("freeglut.php");
$pargc = FFI::new("int");
$argv = FFI::new("char**");
$glut->glutInit(FFI::addr($pargc), $argv);
# $glut->glutInitDisplayMode(GLUT_RGBA);
$glut->glutCreateWindow("php ffi glut.");
$glut->glutDisplayFunc( function () {
require("gl.php"); #下でスコープの外に出したソースを載せています。
require("freeglut.php");
$gl->glClear(GL_COLOR_BUFFER_BIT);
$gl->glColor3f(1.0, 0.0, 0.0);
$gl->glBegin(GL_POLYGON);
$gl->glVertex2f(-0.5, -0.5);
$gl->glVertex2f(0.5, -0.5);
$gl->glVertex2f(0.5, 0.5);
$gl->glVertex2f(-0.5, 0.5);
$gl->glEnd();
$gl->glFlush();
//$glut->glutWireCube(1.0);
echo "using memory (byte): ";
var_dump(memory_get_usage());
});
$glut->glutMainLoop();
マニュアルによるとFFIで呼ぶ関数に渡すコールバック関数は終了するまでメモリをつかんだままになったり、ロードしたFFIのオブジェクトが渡らない(※追記↓)みたいだったりでまだ気を付けてください。
参考:PHP マニュアル – Basic FFI usage
コールバック関数の中でFFIした関数の呼び出しはFFI::cdefした変数を、コールバック関数の中でglobal 変数名とすることでFFIのオブジェクトを呼び出せることが分かりました。
<?php
require("freeglut.php"); #変更
require("gl.php"); #変更
$pargc = FFI::new("int");
$argv = FFI::new("char**");
$glut->glutInit(FFI::addr($pargc), $argv);
# $glut->glutInitDisplayMode(GLUT_RGBA);
$glut->glutCreateWindow("php ffi glut.");
$glut->glutDisplayFunc( function () { #変更
global $gl; #追記
$gl->glClear(GL_COLOR_BUFFER_BIT);
$gl->glColor3f(1.0, 0.0, 0.0);
$gl->glBegin(GL_POLYGON);
$gl->glVertex2f(-0.5, -0.5);
$gl->glVertex2f(0.5, -0.5);
$gl->glVertex2f(0.5, 0.5);
$gl->glVertex2f(-0.5, 0.5);
$gl->glEnd();
$gl->glFlush();
});
$glut->glutMainLoop();
dockerメモ(WSL2)
Docker Desktopを起動してデーモンが動くときのログのパス
%USERPROFILE%\AppData\Local\Docker\log.txt
NVIDIA Jetson nanoのglxgearsベンチマークパフォーマンス
約 2750.0 FPS
Space Party (そら うたげ)

アプリケーションのウィンドウを半透明にするやり方(Windowsの場合)
GUIPropViewアプリケーションをダウンロードして、アプリケーション名またはウィンドウクラス名を調べて、コマンドプロンプトからGUIPropViewのアクションオプションを実行。
GUIPropView.exe /Action Transparent Alpha 150 Process:vvvv.exe Class:TMViewPatch

GUIPropView.exe /Action Transparent Alpha 255 Process:vvvv.exe Class:TMViewPatch

jetson nanoのデフォルトゲーム
/usr/share/man/ja/man6$ ls -1 | sed "s/\(.*\).[1-9].gz/\1/" | xargs man -f | grep \(6\)
adventure (6) – 探検ゲーム
arithmetic (6) – 簡単な算数のクイズ
atc (6) – 空港管制官ゲーム
backgammon (6) – バックギャモンのゲーム
banner (6) – プリンタ用に大きな見出しを出力する
battlestar (6) – 情熱的な冒険ゲーム
bcd (6) – “入力をパンチカード、紙テープに変換する”
bs (6) – 戦艦ゲーム
caesar (6) – シーザー式暗号法の解読
canfield (6) – ソリティアカードゲームキャンフィールド
cfscores (6) – ソリティアカードゲームキャンフィールド
cribbage (6) – カードゲームクリベッジ
factor (6) – factor は素因数分解を行なう, primes は素数を求める
fish (6) – “Go Fish” 遊び
fortune (6) – “おもしろくためになる格言を無作為に表示する”
hack (6) – 運命の洞窟の探検
hangman (6) – hangman ゲーム
intro (6) – ゲームプログラムの紹介
mille (6) – Mille Bornes で遊ぶ
morse (6) – “入力をパンチカード、紙テープに変換する”
number (6) – アラビア数字を英語に変換する
phantasia (6) – ターミナル間ファンタジーゲーム
pig (6) – 入力をぶたラテン語に変換するのだブー
pom (6) – 月齢表示
ppt (6) – “入力をパンチカード、紙テープに変換する”
primes (6) – factor は素因数分解を行なう, primes は素数を求める
quiz (6) – ランダムな知識試験
rain (6) – 雨の降る様を表示する
random (6) – ファイルからのランダムな行選択、あるいは乱数
robots (6) – 悪質なロボット達を撃退する
rogue (6) – 運命の洞窟を探検する
rot13 (6) – シーザー式暗号法の解読
sail (6) – マルチユーザ版ゲーム「帆船の戦い」
snake (6) – 画面上の追いかけゲーム
snscore (6) – 画面上の追いかけゲーム
teachgammon (6) – バックギャモンのゲーム
trek (6) – トレッキーのためのゲーム
wargames (6) – 私とゲームをしませんか ?
worm (6) – いも虫を成長させるゲームで遊ぶ
worms (6) – 端末ディスプレイに蟲を這わせる
wump (6) – 地下洞窟で Wump を狩る
です。
sdljava(win x64 java11 x64)
vc++メモ
・msvcrt.lib libcmt.lib libvcruntime.lib "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.24.28314\lib\x64"
・win32 api *.lib "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64"
arm64のJetsonでLLVMのビルドが普通に通ったぞ!?
Emscripten – Building Emscripten from Source
https://emscripten.org/docs/building_from_source/index.html#installing-from-source
パッケージのLLVMやClangは使わず、LLVMとbinaryenをビルドしてemscriptenを公式リポジトリからクローンすれば動いた。
https://github.com/llvm/llvm-project
cd build/
cmake ../llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS='lld;clang' -DLLVM_TARGETS_TO_BUILD="host;WebAssembly" -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF
cmake --build .
https://github.com/WebAssembly/binaryen
cmake . && make