zvbgtH[dl

hLg̖ڎ

̃}jÁAOni̒氓Q[pt[[Nノつて歌で

レ/h3>
1. Tv
1.1 Oni t[[N̓
1.1.1 fBXvC
1.1.2 `@\
1.1.3 ͏
1.1.4 awt ւ̑Ή
1.2 OniRuntime NX
2. Oni gAvP[V̍쐬
2.1 AvP[V̋N@
2.2 Application C^[tFCX
2.3 Cxg[v
3. ʂ̎舵
3.1 ʂ̏̎菇
3.1.1 EBhE[h
3.1.2 tXN[[h
3.2 DisplayMode NX
4. OtBbN̗p@
4.1 OtBbN̏菇
4.2 `̊JnƏI
4.3 PixelFormat NX
4.4 GLGraphics NX
4.5 C ŏꍇƂ̑_
4.6 awtŃOtBbN@\gp
5. ͏
5.1 Cxg̍\
5.2 L[{[hƃ}EX
5.3 Cvbg\bh
6. Q[Rg[
6.1 Tv
6.2 zRg[̍\
6.3 zRg[͂ƃCxg
6.4 R[h
7. OtBbNR[h̃fobO
8. ֘AN

1.Tv

̏͂ł́AOni zvbgtH[̓AŜ̍\ɂ‚Đ܂B

1.1 Oni t[[N̓

Oni zvbgtH[́AJava găQ[̂ɕKvȕ`揈AfBXvCA͏st[[NłB tXN[AOpenGL ߂p3D`Q[Rg[フ届JavãvÔ݂ŋLqł邱ƂłB Oni t[[N͈ȉ̂悤ȍ\Ă܂B

zvbgtH[
} Onit[[N\

oni.gfx pbP[Wł̓fBXvCAOpenGL `施ߓA`Ɋւ@\NXAoni.runtime pbP[Wɂ͉zvbgtH[̍Ȃ OniRuntime ̑AQ[pbhA}EX͂Ɋւ鏈sNXĂ܂B

1.1.1 fBXvC

ȉ̋@\gpāAQ[ʂ邱Ƃo܂B

tXN[[h
xF[xݒ肵ătXN[̃fBXvC邱Ƃo܂B
EBhE[h
TCYw肵āAEBhE邱Ƃo܂B tXN[[hƂ݂͑ɐ؂ւ”\łB
fBXvC[h̑I
evbgtH[Ŏgp”\ȃfBXvC̐ݒ̈ꗗƂA Cӂ̃fBXvC[hgp”\eXgāA vfBXvC̐ݒ擾邱Ƃo܂B
1.1.2 `@\

Oni ̕`@\ OpenGL ɏĂ܂B C^[tFCXedlׂ̍ȈႢɂ‚ẮAu4. OtBNX̗p@vQƂĂB

1.1.3 ͏

Oni ̊e͏ awt (Abstract Window Toolkit) ƓϏCxgf̗pĂ܂B awt Ƃׂ̍Ⴂɂ‚Ắu5. ͏vQƂĂB ܂AOni ͊OڑꂽQ[pbh̓͂ɑΉĂ܂B ɂ‚Ắu6. Q[pbhvQƂĂB

1.1.4 awt ւ̑Ή

Oni gpAvP[V͊{I awt Ƃ̕p͕s”\łA Jc[쐬̂߂ awt Oni ̕`@\gp邽߂̃NXpӂĂ܂B OpenGL Java oCfBOƂĎgp邱Ƃo܂B

1.2 OniRuntime NX

Oni gAvP[V́AOni ̑唼̋@\ OniRuntimeNXɃANZX邱Ƃɂėp邱Ƃo܂B OniRuntime NXӂ̊֌W}ȉɎ܂B

OniRuntimeNX

} NX֌W̊T

Application C^[tFCX
OniRuntime NXɂ̃C^[tFCXo^邱Ƃɂ `̏`惋[ṽCxg邱Ƃo܂B ڂ́Au2.Oni gAvP[V̍쐬vQƂĂ
DisplayMode NX
tXN[ɗpf[^NXłB ڂ́u3.2 DisplayMode NXvQƂĂB
PixelFormat NX
OpenGL ̏ɗpf[^NXłB ڂ́u3.3 PixelFormat NXvQƂĂB
@
@
̃ANZX OniRuntime CX^Xɑ΂čs܂B AvP[VɗB OniRuntime NX̃CX^X OniRuntime NX static \bhŎ擾邱Ƃo܂B
static OniRuntime getRuntime();

2. Oni gAvP[V̍쐬

̏͂ł́AOni ۂɎgăAvP[V쐬菇܂B Oni gAvP[V̈ʓIȏ̎d͈ȉ̎菇ōs܂B

2.1 AvP[V̋N@

AvP[V̋N͈ȉ̏ java R}hgčs܂B

java oni.runtime.OniRuntime [-options] class [args...]

R}hC̈Ӗ͈ȉ̂Ƃł

NIvV݂͌̂Ƃȉ̂̂܂B

2.2 Application C^[tFCX

OniRuntime NX Application C^[tFCXNXo^邱ƂɂāA`̏`惋[ṽCxg薰ッ朱こニPワ 薰ッ擦xgヘ、4ツで

void oniMain(OniRuntime runtime, String[] args);
void initGraphics(GLEngine g);
void update(GLEngine g);
void quitRequested();

oniMain \bh Oni AvP[Vフエg[|Cgナ u2.1 AvP[Vフ起@vナアvP[VNニ、ワのソbhトばま
initGraphics \bhヘ、OtBbNフ照に呼ばま [U[`フ照Pワ update \bhヘ、 OniRuntime NXフイxg[vナ棚ノ呼ばま ナ描謠ト
quitRequested\bhヘ、EBhEフク[Y{^NbN黷スAAvP[VIフシ[gJbgL[黷スAVXexナ終フ要ニに呼ばまナ各Isト

ワI paint \bhトばれたネれ合ie[uQ[ト描謔ェpノに行ネvP[Vフ場合j OniRuntime NXフ捨ソbhナ果の珊V on/off ン椎ま

void setAutoUpdate(boolean b); 

2.3 Cxg[v

Oni フアvP[Vヘ、Cxg[vフ開nト[{[h}EXAQ[pbhフイxg薰ッ朱こニP謔、ノなまロにイxg[vJnノは、 OniRuntime NXフ捨ソbhトび出ワ

void run(); 

フ際、トび出Xbhヘイxg[vノ条明Oフで蔦て

ワCxg[vフ各Oナ行゜の仕gン0niRuntimeNXフソbhニて提供てま

Event peekEvent();
void processEvent(Event e);

peekEvent\bhヘ、CxgL[ノ涙てで硝起CxgoワCxgL[ノは蔑イxgトつ能ワ
processEvent\bhヘ、peekEvent\bhナ取得CxgWフ鼻ナ就CxgXiノデBXpb`ワCxgフ詳細に関ては「5. ヘ竣Qニて

フ的ノは、フようネプOナイxg謫セACxg邱Ƃo܂B

while ( (Event e = peekEvent()) != null) {
	processEvent(event);
}

ȂACxg[vOōsꍇ̓[v̒1ARuntimeNXyield()\bhĂяođ̃XbhAvP[Vɏセ鯖ノ墨謔、ノてフスbhAvP[Vノ賞ななハ的ノス|XAK[x[WRNVフスbhiワななりメ[I[o[t[ドつ能ワ
ノZield\bhヘ、ルなWbgtH[ニに適リな量休~AAvP[VobNOEhノ移とにス[vフ量を増やすニ\フで、Pjava.lang.ThreadNXyieldsleep\bhgハ的ナ


3. ハの手扱

フ章では、ハの醤痛つて折

3.1 ハの称手順

Oni フ果はウBhE[hニフXN[[hA黷シ齒歌手順痰「ワ

ハJKナは描@\ヘ使pナなぶになてま ハは、Y黷クノグtBbNフ峻ト

3.1.1 EBhE[h

EBhE[hフ章、OniRuntimeNXフ捨ソbhナ行ワ

void createWindow(String title, int width, int height); 

title ノはタCgo[ノ表A width A height ノは、EBhEフサCYw閧オワ

3.1.2 tXN[[h

tXN[[hフ称鼻ヘウBhE[h阨。Gナ ワHp DisplayMode NX閧オA OniRuntime NXフ以歌ソbhナ設定す驍アニで峻ワ

void createDisplay(DisplayMode d);
DisplayMode フイX^X@ƂāAgp”\ DisplayMode ̃Xg̒Iԕ@ƁACӂ DisplayMode @2ʂ肪܂B

gp”\ DisplayMode ̃Xgɂ OniRuntimeNẌȉ̃\bhgp܂B

DisplayMode[] getDisplayModeList()
̃\bh͎s‹Ŏgp”\ DisplayMode CX^X̔zԂ̂ŁA̒ݒ肷 displayMode Ił܂B
// (runtimeOniRuntimẽCX^X)
DisplayMode[] displayModes = runtime.getDisplayModeList();
for (int i = 0; i < displayModes.length; i++) {
    DisplayMode d = displayModes[i];
    if (d.getWidth = 640 && d.getHeight = 480) {
        // 640x480DisplayModeIԁB
        runtime.createDisplay(d);
        break;
    }       
}

܂ARXgN^gĔCӂ DisplayMode ꍇ͎s‹Ŏgp”\ׂKv܂B̂߂ɂ OniRuntime ̈ȉ̃\bhgp܂B

boolean isDisplayAvailable(DisplayMode d);
̃\bh͈œnꂽ DisplayMode s‹Ŏgp”\肵܂B
// (runtimeOniRuntimẽCX^X)
DisplayMode d = new DisplayMode(...);
if (runtime.isDisplayAvailable(d)) {
    // d ͎s‹Ŏgp”\
    runtime.createDisplay(d);
}

gps”\ DisplayMode createDisplay \bhŎw肵ꍇɂ́AIllegalArgumentException X[܂B

3.2 DisplayMode NX

DisplayModeNX̓tXN[ɗpf[^NXłB ȉ̏JvZĂ܂B

DisplayMode ̃CX^Xōꍇɂ́A2‚̃RXgN^̂ǂ炩g܂B

DisplayMode(int width, int height);
DisplayMode(int width, int height, int bitdepth, int refreshrate); 

bitdepth refreshrate ́A USE_DEFAULT w肷邱ƂŁAIɎw肵ȂƂo܂B ‚܂ DisplayMode(width, height); ́A DisplayMode(width, height, USE_DEFAULT, USE_DEFAULT); Ɠ`łB


4. OtBNX̗p@

̏͂ł́AOni ̕`@\ɂ‚Đ܂B

4.1 `@\̗p菇

Oni AvP[Vŕ`@\gpɂ͂܂OtBbN̏KvłB ܂ݒ肷 PixelFormat NX肵āA OniRuntime NX̎̃\bhŐݒ肵܂B

void createGraphics(PixelFormat pf); 

PixelFormat DisplayMode NXƈႢA CX^Xō邱Ƃo܂B pł PixelFormat ̃Xg OniRuntime NX̎̃\bhŎ擾āA ̒IłB

PixelFormat[] getPixelFormatList(); 

܂Apł PixelFormat ̈ꗗ̓fBXvC̃ZbeBOςƕω܂B ̍ۉߋ PixelFormat Xg͔j܂B AjꂽԂ PixelFormat createGraphics Ɏw肵ꍇA IllegalArgumentException X[܂B

4.2 `̊JnƏI

Oni ̕`@\gpł^C~ÓAOniRuntime ̃C[v̒ Application C^[tFCXɕ`惋[vCxgꂽꍇƁAAvP[VIɕ`挠̎擾sꍇ܂BApplication C^[tFCXɂ‚Ă u2.2 Application C^[tFCXvQƂĂB

Iɕ`挠̎擾sꍇ́Aoni.gfx.GLContext NẌȉstatic\bhgĕ`挠̎擾s܂B

GLGraphics getCurrentGraphics(); 

܂RuntimeNX̎̃\bhgĂl̂Ƃo܂B

	GLGraphics getGraphics(); 

`悪Iĕ`挠J鎞ɂ́AgetGraphics\bhŎ薰ッGLGraphicsIuWFNgɑ΂Ď̃\bhĂяo܂B

	void dispose(); 

Oni̕`͊{IɃobNobt@(ItXN[obt@)ɑ΂čs܂B ̂߁A`挋ʂXN[ɔfꍇ̓obNobt@[̃Xbvs܂B Xbv́AGLGraphicsIuWFNg̎̃\bhĂяo܂B

	void swapBuffers(); 

OníÃXbh炩Cӂ̃^C~Oŕ`挠擾J肷邱Ƃo܂B ͎ɕ`̏(eNX`[AfBXvCXg̓o^)ɎgƌʓIłB `̊ɑ₩ɕ`挠jȂƁA㑱̕`揈؂A ň͕`揈t[YĂ܂܂BIɕ`挠擾ꍇ́A Yꂸdispose\bhĂԂ悤ɋC‚ĂB

ȂAApplicationC^[tFCX̕`惋[vCxg IɃobt@[̃XbvA`挠̊Js܂B

`挠̎擾AJAGLContextNXɂ‚Ă̏ڂ APIt@XQƂĂB

4.3 PixelFormat NX

PixelFormat NX OpenGL ̏ɗpsNZtH[}bg JvZNXłB ̃NX̒gĂǂ̂悤Ȍ` OpenGL 邩f邱Ƃo܂B

PixelFormat NXœ͈ȉ̂ƂłB

ȂÃNX̓CX^X邱Ƃo܂B LPixelFormat̎擾̎d́Au4.1 `@\̗p菇v QƂB

4.4 GLGraphics NX

GLGraphics NX Oni OpenGL ̊֐ɃANZX邽߂̃C^[tFCXłB OpenGL1.2 ̑SĂ̖߂ƁAGNXeV glu ̈ꕔ̖߂T|[gĂ܂B

4.5 C ŏꍇƂ̑_

Oni ̕`施߂͊{Iɂ OpenGL ̖߂ƈꏏłA Java ̎dlɂ킹邽߈ꕔ̋@\ɂăC^[tFCX̕ύX܂B

̓Iɂ͒_z̋@\Ŏ̖߂ɕύX܂B

void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer);
void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer);
void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer);
void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer);
void glSecondaryColorPointerEXT(GLint, GLenum, GLsizei, GLvoid *);

̖߂ȉ̂悤ɕύX܂B

void glColorPointer(int size, int stride, NativeArray array);
void glEdgeFlagPointer(int stride, NativeArray array);
void glIndexPointer(int stride, NativeArray array);
void glNormalPointer(int stride, NativeArray array);
void glTexCoordPointer(int size, int stride, NativeArray array);
void glVertexPointer(int size, int stride, NativeArray array);
void glInterleavedArrays(int format, int stride, NativeArray array);
void glSecondaryColorPointerEXT( int size, int stride, NativeArray array);

NativeArray ƌNX_z̃|C^[yуf[^̃^Cvu܂B NativeArray NXJava̔Cӂ̃v~eBuzɐ܂B

NativeArray(byte[] array);
NativeArray(short[] array);
NativeArray(int[] array);
NativeArray(float[] array);
NativeArray(double[] array);

ďo NativeArray _z̃|C^[ƂāAe߂ɓnĂB

4.6 awtŃOtBbN@\gp

Oniɂ́AOtBbN@\javaWGUIt[[Nławt(Abstract Window Toolkit)gponi.awt.GLCanvasNXpӂĂ܂BRuntimełƑS`@\ĝŁAQ[J̃c[ނ肷̂ɂƂĂ֗łB܂ASwingŃ[U[C^[tFCX\zQ[邱Ƃo܂B

GLCanvasNX́AtXybNOpenGLoCfBOawtpCanvasƂĎg܂AfBXvCXgAeNX`[́ASĂGLCanvasŋL܂BGLCanvasōꂽeNX`[́ÂǂGLCanvasłgpł܂B

: Windowsł̃NXgꍇɁAꕔ̃OtBbNJ[hł܂ɃAvP[VsɂȂꍇ܂Bawt̎̓sAOpenGL̕`̃XbhƃEBhẼCxgXbhɑĂ܂Ă邽߂ŁAAvP[ṼnOAbvN܂BǍۂ͕̃t[œɃAj[V点̂~߂At@C_CAO\ɂ̓Aj[VXgbvȂΉ邱ƂŔقڑj~邱Ƃo܂B


5.͏

̏͂ł́AOniRuntimeɂăgKe̓̓Cxg̏@ɂ‚Đ܂B

5.1 Cxg̍\

OniRuntimepeekEvent\bh́AvbgtH[ŗL̃CxgAOnĩCxgIuWFNgĕԂ܂BCxgĂȂꍇnullԂ܂B̃\bh́AvbgtH[ŗL̃Cxg[vɂ邽߁A͏擾Kv̗LɊւ炸IɌĂяoȂ΂Ȃ܂B
OniRuntimerun\bhł́A[vŖpeekEventĂяo܂Brun\bhgC[vpȂꍇÃ[vӐ}IɎ~߂Ƃɂ́AAvP[V璼peekEventĂяoKv܂B

OniRuntimeɂăgKCxgɂ͈ȉ̎ނ܂B

̃Cxgoni.runtime.event.EventNX̔hNXƂĕ\܂BEventNXgetID\bhɂăCxg^Cvʂ邱Ƃł܂B Rg[Cxgɂ‚Ă͏ڍׂu6.Q[Rg[vŐ܂B

AvP[VCxgʒm@ƂāACxgXif܂BeCxgʂɑΉOniRuntimeaddXXXListener\bhɂāACxgXiݒ肷邱Ƃł܂BOniRuntimedispatchEvent\bh́Aݒ肳ĂCxgXiɑ΂ăCxgʒm܂B run\bh̃C[vł́ApeekEventɑdispatchEventĂяoĂ܂B

5.2 L[{[hƃ}EX

AWT̃L[CxgA}EXCxgƂقړlɈƂł܂B
L[CxgɂKEY_RELEASEDKEY_TYPED̔Ƃɂ‚ẮAJDK1.3AWTƓƍlĂB
AWTɂMouseListenerMouseMotionListeneŕAOnił͒PMouseListenerC^tF[XƂĒ`܂B܂A}EXzC[̉]ӖMOUSE_WHEEL_MOVED^Cṽ}EXCxggpł悤ɂȂĂ܂B

5.3 Cvbg\bh

Onił́Aȉ2‚̃[ĥꂩpăCvbg\bhgp邱Ƃł܂B

pbVu[h

vbgtH[Ɉˑ͕ϊR|[lggp܂BAvP[Vł́A͕ϊm肵eLXĝ݂KEY_TYPED^CṽL[CxgƂĎ薰ッ灼
pbVu[hw閧キノは、OniRuntimesetInputMethodPassiveMode\bhトび出ワCvbg\bhフデtHgフ蕉はパbVu[hナ

ANeBu[h

AvP[Vノ対て、ヘ変肝テLXgニキbgハ置フ杖がイvbg\bhCxgニて通知ワナ終Iノ届変確閧オeLXgヘ、KEY_TYPED^Cvフキ[Cxgニて通知ワ ANeBu[hp驍アニにて、AvP[Vナは変肝テLXgOナ描謔キ驍アニでまノIUX|bgヘ変簡どの篠能ナAマ蟹驛㎆UC^tF[Xノは、vbgtH[ヒ体変蟹R|[lggpワANeBu[hナは、フ変蟹R|[lgフ表ハ置w閧キ驍アニでま
ANeBu[hw閧キノは、OniRuntimesetInputMethodActiveMode\bhトび出ワフ際、ActiveInputMethodRequestsIuWFNgン定しワActiveInputMethodRequestsヘ、マ蟹R|[lgフ表ハ置w閧キCvbg\bhvnhナ

Cvbg\bhフのを無五は有ノには、OniRuntimeenabledInputMethods\bhpワ


6.Q[Rg[

フ章では、OnizRg[@\フ概vOni^Cナの用@ノつて折

6.1 Tv

OnizRg[@\ヘ、Q[pbh竭Rg[Ȃǂ̃Rg[foCXA̓L[{[h̓͂揶Iノ∮氓ワロの届デoCXuzRg[vニて紬蛾こニで、ヘデoCXフ違いモ朱こニな3g[ニつ能ノなま
zRg[ニ届デoCXヤのマbsOヘ、{^Aネどのコg[\vfPハに設定さワPCpフゲ[pbhp髑スフ場合AGh[UヘアvP[Vニにボ^闢牝などのカX^}CYsKvワzRg[gpニ、ルなvP[VヤでカX^}CYン鱈驍アニでま

Oni^Cナは、ノ簡便な鼻ナ越Rg[gp驍アニでまGh[URg[IニカX^}CYs゜の標IGUI氓ドp驍アニにAvP[Vナは以歌ようノ省り順ナ越Rg[ヘけ朱こニでようノなま

フ越Rg[Ɏgp邽߂ɁAOni^Cł͉z|[gƂTOp܂Bz|[g͉zRg[1‚̐ڑƍl邱Ƃł܂B̐ڑؒf̓Rg[IGUIpčŝŁAAvP[VӎKv͂܂BAvP[Vł͂ꂼ̉z|[gƂɃRg[CxgA邱Ƃł܂B

6.2 zRg[̍\

ControllerElementNX́AzRg[̍\vfӖ܂BRg[\vfɂ́Aȉ3‚̃^Cv݂܂B

ControllerDescriptorNX́AzRg[̂ЂƂ‚̍\Lq̂łBzRg[ɔꂽ{^⎲AnbgXCb`̍\ӖAControllerElementێĂ܂B܂AzRg[̍\͐ÓIłAxꂽControllerDescriptorIuWFNg͕sςłB ControllerDescriptoŕAzRg[邽߂ɕKЂƂ‚w肳܂B
ControllerDescriptorNX̃X^eBbNoƂāAWIȉzRg[\LqControllerDescriptorƁA̍\vfłControllerElement̃CX^XpӂĂ܂B ȃRg[KvƂAvP[VłȂ΁A̕W`ControllerDescriptorgp邱ƂłƑł傤B

6.3 zRg[͂ƃCxg

zRg[ɂ͂̏Ԃ́AȉɎ悤ɃRg[\vfƂ̏Ԃɂĕ\܂B

{^

ԂƂĉĂ邩ۂbooleanl܂B

X̑傫m鎲ł邩ۂ͋ʂǍX͈ȉɎ萔͈͓̔܂BʓIȏ\L[̂悤2̎\邽߂ɁA͕̐‚Ƃ܂B̏ꍇA̒l͊eɊi[zŕ\܂B

nbgXCb`

͕\0.0`2*PI܂ł̒lƁA͂ӖController.HATSWITCH_CENTER()܂B

zRg[͂̔́AControllerEventƂCxgƂĎ擾邱Ƃ”\łBControllerEvent͂Rg[\vfւ̓͂ƂɐA̗vf̃Cxgɂ͏Ԃێ܂B̓̓CxgƓlAOniRuntimepeekEventControllerEventԂ܂B CxgXiݒ肷ɂ́AOniRuntimeaddControllerListener\bhp܂B

ControllerNXisPressed, getAxisPoint, getHatswitchValue̊e\bhɂāA{^̉ԁǍXAnbgXCb`̒lꂼ擾邱Ƃł܂B̃\bh͏ɁAzRg[݂̌̏ԂԂ܂B

6.4 R[h

Oni^CʼnzRg[gpR[h܂B

// gpRg[fXNv^W`6{^WCpbhƂ
ControllerDescriptor descriptor = ControllerDescriptor.JOYPAD_6BUTTONS;
// |[g1ʼnzRg[̎gpw (runtimeOniRuntimẽCX^X)
runtime.useController(1, descriptor);
// |[g0Ԃɑ΂ăRg[Cxg̃Xiݒ肷 (listenerControllerListener̃CX^X)
runtime.addControllerListener(0, listener);

Rg[Cxg鑤ł͈ȉ̂悤ȃR[hp܂B

// {^ꂽƂɌĂяoControllerListener̃\bh
public void buttonPressed(ControllerEvent e) {
	ControllerElement source = e.getSource(); // ꂽ{^擾
	if (source == ControllerDescriptor.BUTTON_X) {
		attack();
	} else if (source == ControllerDescriptor.BUTTON_Y) {
		jump();
	}
}

@

7.OtBbNR[h̃fobO

@Oniɂ́AOtBbÑfobO邽߂ɕ֗ȋ@\܂B
@fobO@\gpɂ͈ȉ̕@܂B

@oni.gfx.GLDebugGraphicsNX́AOtBbNR[h̃fobOȒPɂ邽߂GLGraphics̃TuNXłBȉɁAGLGraphicsNXɂGLDebugGraphicsTvR[hЉ܂BIȃG[̃g[XsꍇɎgƂo܂B

// 
public void update( GLGraphics _g) {
	GLDebugGraphics g = new GLDebugGraphics(_g);
			.	//
			.	//	`揈
			.	//
}

@GLDebugGraphicsNX݂̌̋@\OpenGL̖߃xŃG[o_ŁAG[̏oXbhStackTraceo͂邾ɂƂǂ܂Ă܂AgĂɎg₷Ȃ\łB


8.֘AN


Copyright © 2001-2002 CyberStep, Inc. All Rights Reserved.

Oni \tgEFA