
동작하긴 하는데, CF 32G를 넣으면 전류부족이라고 징징거려서 외부 전원을 이용하도록 살짝 개조.
어차피 카메라 연결한 거랑 비슷할테니 큰 문제는 없어보이지만..(혹시나해서 다이오드 박아놓긴 했음)
....


자료 없이 듣고 한 거라 번역미스가 있을지도 ㅡㅅ-);;;
---------
누구냐! 나와라!
어째서냐
PROLOGUE
기폭
적당히 하는 게 어떤가?
누구냐?
부정한 이 세상을 살아가면서 거기에 죄를 더할 생각은 아니겠지?
네놈은
하트랜드의 신부
스스로는 깨닫지 못하겠지?
너희들의 마음은 비명을 지르고 있단다.
신께 구원을 받도록 하라.
이 몸이 행복한 천계로 이끌어 주마.
헛소리마!
괴로워 하라. 그 고통이 너희들의 마음 속 더러움을 정화시켜 줄 거다.
고통이 크면 클 수록 천계의 행복도 커지게 되는 법.
그것이 하트랜드 정교의 가르침이다.
천계에 행복을 이루는 것
방해하지 마라
살인은 그만 둬
이건 성스러운 일이다
제시
제시
날 집어던지다니 배짱도 좋은 걸
이름을 물어보고 싶군
제시, 제시 무어
------
------
녀석 어디에 있는 거야
조사 결과는?
이걸 봐
이 별을 잡으려고 떠났다고 해
그런가
그래서 목적지는?
오르코 성계 쪽인 거 밖에는 알 수 없었어
오르코 성게?
또 빠져나간 건가
괜찮아. 반드시 쫓아갈테니까
제시
방랑하는 어린 양을 구원하는 것이 우리들 하트랜드에 있는 신부의 임무다.
네 녀석을 천계에 상큼히 데려다 주마.
난 술취한 놈과 싸우고 싶지 않아
뭐라구
저기요
넌 뭐냐
저는 테레누입니다.
여러분들께 부탁이 있습니다.
..란 얘기는 그 악당들로부터 너를 호위하면 된다는 건가?
그렇습니다. 행성 가네트까지.
행성 가네트까지?
흠, 재밌는 얘기로군
제시, 네 녀석과의 승부는 그 뒤로 미루지
테레누씨.
네?
죄송한 얘기지만 그 의뢰는 거절하겠습니다.
뭐야? 매정하구만
아니면 뭔가
이 소년에게 조금 여자가 말을 걸었다고 질투하는 건가?
닥쳐
티아나는 동생이다.
동생?
동생이라고
그래. 난 동생밖에 될 수 없는 거겠지
동..생.이라
좋아, 만전을 기했겠지?
당신, 제시와는 어떤 관계?
좀 전에 만난 게 전부지
그런데, 녀석이라면 할 수 있어.
피가 끓는 걸
제시
제시
아깐 미안해
쓸데없는 말해서
그 배를 조금이라도 빨리 찾아서 쫓아가야..라고 생각했던지라..
알아 사실 티아나가 말하는 게 옳지
지금 생판 남의 의뢰따위 받을 여유가 없지
무, 무슨 일이야
아, 아무것도 아니야
곤란한 사람을 보면 그냥 지나칠 수 없는 거지 제시는
분명히 의뢰를 받아들일거라 생각했어
테레누가 말한 행성 가네트는 오르코 성계의 제 4 행성이야.
테레누의 소리다
넌 여기 있어
테레누는?
녀석들이
제길
어이 제시
뭐하는 놈이야
제길, 대체 왜 내가 이런 짓을 해야하는 거야
좋아, 지금이다
녀석 뭐 이리 빨라
흥, 얼마나 빠른가 테스트해볼까?
네
녀석이 안 보이는군요
여기까지 쫓아온 것만해도 대단하… 으윽
개색휘가
개늠이 눈은 어따 두고…
어이 누가 오는데
심야의 조깅이라 건강한 생활이구만
멈춰 죽고싶지 않으면
서둘러야 한다고
여긴 우리 허가 없인 못 가지
네 놈 면상이 맘에 안 드는 걸
죽어줘야 겠어
잠시 빌리지
남의 물건 빼앗다니 나쁜 놈
이놈~
당신도 참
오, 이거 제법일세
젊은 것치고는
------------------
어찌되었건 무사해서 다행이야
아까는 조금 방심했지만 이걸로 당신을 노리는 녀석이 있다는 건 확실하군
내가 꼭 붙어있어주겠어
어때 테레누
나와 시간 좀 내주겠나?
기분 전환겸 한 잔 마시지
기쁘지만 조금 피곤해서
오늘밤은 쉬고싶네요
그거 유감일…
티아나
뭐야 제시
티아나가 없어
뭐야?
이건
제시, 수고했어
티아나를 구하고 싶으면
행성 가네트의 우주항에 혼자 오도록
테레누에게
속았다
이미 도망갔어
어떻게 할까 제시
파오롱
파오롱
티아나가 납치됐다.
어디 있는지 찾아봐 줘.
뭐야
시끄럽잖아, 모처럼 편히 자고있었…
누구야? 여긴 어디야?
나 말인가? 나는 파오롱일세.
자네는 지금 내 몸 속이지.
뭐라고?
당신의 몸 속이라고?
그렇지. 나는 생체 우주선일세.
생…체… 우주선?
이해가 되려나?
나는 일 억년 역사를 지닌 콘테인 문명의 최고 걸작 중 하날세.
뭐, 자네들 수준의 머리론 상상도 못하겠지만
뭐라는 거야 이 자식
내 보내줘!
아아 그렇게 화내지 말라고
원한다면 밖에 내보내 줄 수도 있지
어~이
파오롱, 티아나는?
기다려 봐, 조사하고 있어
음, 이 이미 행성엔 없는 거 같군
티아나
파오롱, 행성 가네트로 향해 줘.
제시, 괜찮겠나?
목적한 상대를 마지카까지 쫓았는데 도중에 딴짓할 여유는 없…
닥치고 가 달라고
목적한 상대?
대체 뭘 하려던 거야?
그건 할아버지가 소중히여겼던 거다.
이제 네게 전해줘도 될 거 같구나.
제시, 소중히 간직하렴
생일 축하한다
고마워요.
소마즈씨
오, 꽤나 멋진 시계로구나
그럼 나도 생일 축하 선물을 하나 해볼까?
아들을 잠시 데려가겠습니다.
네
자 전부터 보고싶어하던 대 망원경이다.
한번 들여다 보거라
어? 정말 괜찮아요?
그래.
괜찮니?
제시, 제시~
티아나
누구?
파고스입니다.
들어오세요
테레누님, 제시녀석이.
어떻게 됐다는 거죠?
이 행성 가네트의 우주항에
어느새?
비스마크의 경계도 걸리지 않고 어떻게?
행성의 위성 궤도 내에 녀석의 것으로 보이는 우주선을 발견했습니다만
제시는 혼자서?
이걸 보시죠
테레누님, 녀석이라면 반드시 원하는 걸 가져와줄 거라 확신합니다.
나도 그렇게 믿고 싶어요.
데려온 애는?
불쌍하게도
이것도 모두 비스마크가를 위해
제시란 놈이 살아있다고?
정말인가? 테레누
직접 확인하면 되잖아
기대되는군.
5년 전보다 얼마나 파워업했는지 내가 확인해 보지.
내려달라면 내려 줘!
제시 혼자서 오라고 했네.
지금은 어설프게 움직이지 않는 게 좋아.
진득히 앉아있을 때가 아니잖아!
날 내려보내 줘.
날 내려보내 줘!
호오?
제시
오, 있다 있어!
알았나? 너희들은 끼지 않는다!
어디!
어떻게 된 거냐 제시! 덤벼봐라!
싸움은 싫어. 무기는 가지고 있지 않다.
남자라면 짐승이 돼라. 뜨거운 피를 끓어 올리며 싸워라!
크로스님! 크로스님!
짜식~
멈춰라 크로스
제라 누님
제시의 실력은 충분히 알았을 터
이 이상의 테스트는 필요 없다.
물러가거라.
크로스라고 헀나. 돌려줄 게.
응? 이건?
어느새?
이 짜식~
크로스!
뭐라고? 소도혼?
그 계곡에 들어가 파란 색 돌을 찾아와 줬음 해요.
파란 색 돌?
그건 뭐지?
당신은 상관할 바 없는 것
당신은 그저 그 돌이 있나 없나만 살펴보고 오면 되는 거예요.
거절한다면?
티아나!
티아나를 돌려받고 싶다면…
말하는 걸 들으세요.
테레누!
이쪽으로 와 주세요. 제시.
당신에게 좋은 물건을 빌려주겠어요.
이건 우리 비스마크가의 수집품이에요.
내가 무기를 쓰지 않는 건…
소도혼의 계곡에 들어가 돌아온 사람은 한 명도 없어요.
티아나를 구하고 싶으면…
제시, 무기를 골라요.
완고하군요. 그런 낡아빠진 총을
네 녀석은 내게 크게 창피를 줬지.
그래서 배웅하러 데리고 왔다구.
이 애를 구하고 싶다면 돌을 찾아 가지고 돌아와라!
반드시 돌아오지
----
----
MOBIUS
기억
더럽혀진 이 세상을 구원하는 건 누구냐?





Direct3D 에서 라이팅을 사용하려면 1개 또는 여러개의 라이트를 작성해야합니다. 어떤 색이 지오메트리 오브젝트를 조사할 것인가를 결정하려면 지오메트리 오브젝트를 렌더링할 매터리얼을 작성할 필요가 있습니다. 신을 렌더링하기 전에 Lights 샘플 오브젝트는 1개의 매터리얼과 1개의 디렉셔널 라이트를 설정하는 애플리케이션 정의 함수인 SetupLights 를 호출합니다.
매터리얼은 라이트가 조사될 때에 지오메트리 오브젝트의 서피스에 반사할 색을 정의합니다. 다음 코드는
D3DMATERIAL9 mtrl; ZeroMemory( &mtrl, sizeof(mtrl) ); mtrl.Diffuse.r = mtrl.Ambient.r = 1.0f; mtrl.Diffuse.g = mtrl.Ambient.g = 1.0f; mtrl.Diffuse.b = mtrl.Ambient.b = 0.0f; mtrl.Diffuse.a = mtrl.Ambient.a = 1.0f; g_pd3dDevice->SetMaterial( &mtrl );
매터리얼의 디퓨즈 색과 앰비엔트 색이 황색으로 설정됩니다.
이것으로 매터리얼이 신에 적용되었습니다. 다음으로 라이트를 작성합니다.
Direct3D 에서 사용할 수 있는 라이트에는 다음 3종류가 있습니다.
샘플 코드에서는 한쪽 방향으로 라이트를 조사하는 디렉셔널 라이트를 작성합니다. 또, 코드를 사용해 라이트의 방향을 좌우로 움직입니다.
다음 코드는
D3DXVECTOR3 vecDir; D3DLight9 light; ZeroMemory( &light, sizeof(light) ); light.Type = D3DLIGHT_DIRECTIONAL;
다음 코드는 이 라이트의 디퓨즈 색을 흰색으로 설정합니다.
light.Diffuse.r = 1.0f; light.Diffuse.g = 1.0f; light.Diffuse.b = 1.0f;
다음 코드는 라이트의 방향을 원형으로 회전시킵니다.
vecDir = D3DXVECTOR3(cosf(timeGetTime()/360.0f),
0.0f,
sinf(timeGetTime()/360.0f) );
D3DXVec3Normalize( (D3DXVECTOR3*)&light.Direction, &vecDir );
범위로는 Direct3D 에 라이트의 이펙트가 미치는 범위를 지정합니다. 이 멤버는 디렉셔널 라이트에는 영향주지 않습니다. 다음 코드는 이 라이트에 1000단위의 범위를 할당합니다.
light.Range = 1000.0f;
다음 코드는
g_pd3dDevice->SetLight( 0, &light );
다음 코드는
g_pd3dDevice->LightEnable( 0, TRUE);
다음 코드는
g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
이 코드 샘플의 마지막 순서는 다시
g_pd3dDevice->SetRenderState( D3DRS_AMBIENT, 0x00202020 );
위의 코드에서는 D3DRS_AMBIENT 디바이스 변수는 라이트 그레이 (0x00202020) 로 설정되어있습니다. 앰비언트 라이팅은 지정된 색으로 모든 오브젝트를 비춥니다.
라이팅과 매터리얼에 대해 자세한 것은「라이팅과 매터리얼
이 튜토리얼에서는 라이팅과 매터리얼을 사용하는 방법을 나타냈습니다.「튜토리얼 5:텍스쳐 맵의 사용」에서 텍스쳐를 서페이스에 추가하는 방법을 다룹니다.
Direct3D 라이트로 3D 오브젝트가 보다 리얼하게 보일 수 있게 되었습니다. 신의 각 지오메트리 오브젝트는 사용된 장소와 라이트의 종류를 베이스로 해서 라이트가 조사됩니다. 이 튜토리얼의 샘플 코드에서는 라이트와 매터리얼에 대해서 설명합니다.
[DX9] 4.라이트의 작성과 사용 1 - 신 지오메트리 초기화
라이트를 사용하는 요건의 하나로 각 서피스에 법선이 포함되도록 할 필요가 있습니다. Lights 샘플 프로젝트에서는 새로운 커스텀 정점 타입을 사용합니다. 새로운 커스텀 정점형식에는 3D 위치와 서피스 법선을 포함합니다. 서피스 법선은 내부에서 Direct3D가 라이트의 계산을 하는데 사용됩니다.
struct CUSTOMVERTEX
{
D3DXVECTOR3 position; // The 3D position for the vertex.
D3DXVECTOR3 normal; // The surface normal for the vertex.
};
// Custom flexible vertex format (FVF).
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_NORMAL)
이것으로 바른 벡터 형식이 정의 되었습니다. Light 샘플 프로젝트에서는 원기둥을 작성하는 애플리케이션 정의 함수인 InitGeometry 를 호출합니다. 처음에는 원기둥의 포인트를 격남한 정점 버퍼를 작성합니다. 다음 샘플 코드에 그것을 표시했습니다.
// Create the vertex buffer.
if( FAILED( g_pd3dDevice->CreateVertexBuffer( 50*2*sizeof(CUSTOMVERTEX),
0 /*Usage*/, D3DFVF_CUSTOMVERTEX,
D3DPOOL_DEFAULT, &g_pVB, NULL ) ) )
return E_FAIL;
다음에는 정점 버퍼를 원기둥의 포인트로 묻습니다. 다음 샘플코드에서는 각 포인트가 위치와 법선으로 정의 되어있습니다.
CUSTOMVERTEX* pVertices;
if( FAILED( g_pVB->Lock( 0, 0, (void**)&pVertices, 0 ) ) ) return E_FAIL;
for( DWORD i=0; i<50; i++ )
{
FLOAT theta = (2*D3DX_PI*i)/(50-1);
pVertices[2*i+0].position = D3DXVECTOR3( sinf(theta),-1.0f, cosf(theta) );
pVertices[2*i+0].normal = D3DXVECTOR3( sinf(theta), 0.0f, cosf(theta) );
pVertices[2*i+1].position = D3DXVECTOR3( sinf(theta), 1.0f, cosf(theta) );
pVertices[2*i+1].normal = D3DXVECTOR3( sinf(theta), 0.0f, cosf(theta) );
}
http://ko.wikipedia.org/wiki/%EC%82%BC%EA%B0%81%ED%95%A8%EC%88%98
앞의 샘플코드를 사용해 정점 버퍼를 원기둥의 정점으로 묻으면 정점 버퍼는 렌더링 할 수 있게 됩니다.
다만, 이 신의 매터리얼과 라이트는 원기둥을 렌더링하기 전에 미리 설정해둘 필요가 있습니다.
이것에 대해서는「2 - 매터리얼과 라이트 설정」에서 설명합니다.
사영 트랜스폼 행렬은 지오메트리를 3D 뷰 공간으로부터 2D뷰포트 공간으로 변환하는 방법을 정의하고 있습니다.
다음 코드는 사영 트랜스폼 행렬을 작성해 Direct3D 디바이스에 대해 현재의 사영 트랜스폼을 설정합니다.
D3DXMATRIX matProj; D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f ); g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
첫번째로
다음에는
사영 트랜스폼에 대한 자세한 것은 「사영 트랜스폼
이 튜토리얼에서는 행렬을 사용하는 방법을 표시했습니다.「튜토리얼 4:라이트의 작성과 사용」에서는 리얼리티를 높여주기 위한 신에 라이트를 추가하는 방법을 다뤄 보겠습니다.
뷰 트랜스폼 행렬은 뷰의 위치와 회전을 정의합니다. 뷰 행렬은 신에 대해서 사용되는 카메라 입니다.
다음 코드는 뷰 트랜스폼 행렬을 작성해 Direct3D 디바이스에 대한 현재의 뷰 트랜스폼을 설정합니다.
D3DXVECTOR3 vEyePt ( 0.0f, 3.0f,-5.0f ); D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f ); D3DXVECTOR3 vUpVec ( 0.0f, 1.0f, 0.0f ); D3DXMATRIXA16 matView; D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec ); g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
처음에는
다음에는
뷰 트랜스폼의 자세한 사항은 「뷰 트랜스폼
신에 대한 월드 트랜스폼을 정의하면 사영 트랜스폼 행렬(projection transform matrix)을 사용할 수 있게 됩니다. 이 경우도 트랜스폼을 정의하는 순서는 중요하지 않습니다. 다만, Direct3D 는 다음 순서로 신에 행렬을 적용합니다.
사영 트랜스폼 행렬의 정의에 대해서는「 3 - 사영 트랜스폼 행렬 정의」를 참조해 주세요.
이 튜토리얼에서는 행렬의 개념을 소개하고, 행렬의 사용방법을 보여줍니다. Vertices 샘플 프로젝트에서는 2D의 정점을 렌더링하고 삼각형을 드로우했습니다. 그리고, 이 튜토리얼에서는 3D 정점의 트랜스폼을 처리합니다. 행렬은 카메라와 뷰포트의 셋업에도 사용됩니다.
Matrices 샘플 프로젝트에서는 지오메트리의 렌더링을 실행하기 전에 애플리케이션 정의의 SetupMatrices 함수를 호출해 3D 삼각형의 렌더링에 사용하는 행렬 트랜스폼의 작성과 정의를 실행합니다. 이들 타입의 트랜스폼은 통상 3D 신의 경우에 설정됩니다. 이들 일반적인 각각의 트랜스폼을 작성하는 것을 다루도록 하겠습니다.
==========================
[DX9] 3.행렬의 사용방법 1 - 월드 트랜스폼 행렬 정의
월드 트랜스폼 행렬에서는 3D모델 공간에서 지오메트리의 평행이동, 스케일링, 회전을 실행하는 방법을 정의합니다.
다음의 코드에서는 삼각형을 y축 회전으로 회전 시킨 뒤 Direct3D 디바이스에 대한 현재의 월드 트랜스폼을 설정합니다
D3DXMATRIX matWorld; D3DXMatrixRotationY( &matWorld, timeGetTime()/150.0f ); g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
처음에는
다음은,
월드 트랜스폼의 자세한 사항에 대해서는 「월드 트랜스폼
신에 대한 월드 트랜스폼을 정의하면 뷰 트랜스폼 행렬을 사용할 수있게 됩니다. 이 경우도 트랜스폼을 정의하는 순서는 중요치 않습니다. 다만, Direct3D에서는 다음 순서로 신에 행렬을 적용합니다.
뷰 트랜스폼 행렬의 정의에 대해서는「2 - 뷰 트랜스폼 행렬의 정의」를 참조해 주십시오.
이것으로 정점 버퍼에 정점이 격납되었습니다. 다음은 표시를 렌더링합니다. 표시의 렌더링에서는 먼저 백 버퍼를 클리어 해 청색으로 하고 그 다음 BeginScene 을 호출합니다.
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0L ); g_pd3dDevice->BeginScene();
정점 버퍼로부터 정점 데이터를 렌더링 하려면 몇 단계를 거칩니다. 우선 스트림 소스를 설정합니다. 이 때 스트림 0을 사용합니다. 스트림 소스는
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
첫번째 파라메터는 스트림 번호, 두번째 파라메터는 정점 버퍼로의 포인터 입니다. 세번째 파라메터는 스트림의 선두로부터 정점 데이터의 선두까지의 오프셋입니다. 이 예에서는 0입니다. 마지막 파라메터는 정점 선언의 각요소의 바이트 수입니다.
다음은
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
SetFVF 의 유일한 파라메터가 정점 데이터 레이아웃을 정의하는 고정 정점 함수 코드입니다.
다음은 아래의 샘플 코드에 나오는 것처럼
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );
DrawPrimitive 가 받아들이는 1번째의 파라메터는 Direct3D에 드로우하는 프리머티브의 종류를 지시하는 플래그입니다. 이 샘플에서는 D3DPT_TRIANGLELIST 플래그를 사용해 삼각형의 리스트를 지정합니다. 두번째 파라메터는 처음 로드할 정점의 인덱스입니다. 세번째 파라메터는 드로우할 프리머티브의 수를 나타냅니다. 이 샘플에서는 1개의 삼각형만 드로우하므로 이 값은 1이 설정됩니다.
각종 프리머티브의 자세한 내용에 대해서는 「프리머티브」를 참조해 주십시오.
마지막으로 신을 종료한 후 백 버퍼를 프론트 버퍼에 할당합니다. 이 예를 다음 코드에 나타냈습니다.
g_pd3dDevice->EndScene(); g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
백 버퍼를 프론트 버퍼에 할당하면 클라이언트 윈도우에 3개의 다른 컬러의 포인터를 가진 삼각형이 표시됩니다.
이 튜토리얼에서는 정점을 사요해서 지오메트릭 쉐이프를 렌더링하는 방법을 다뤘습니다.「튜토리얼 3: 행렬의 사용방법」에서 행렬의 컨셉과 그 사용방법을 소개합니다.
커스텀 정점 포맷이 정의 되면 다음은 정점을 초기화 합니다. Vertices 샘플 프로젝트에서는 필요한 Direct3D 오브젝트를 작성한 후에 애플리케이션 정의 함수인 InitVB를 호출해 이것을 실행합니다. 다음 샘플 코드는 3개의 커스텀 정점의 값을 초기화 합니다.
CUSTOMVERTEX vertices[] =
{
{ 150.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
{ 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
{ 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
};
상기 샘플 코드에서는 3개의 정점을 3각형의 포인트로 채우고 각 정점이 방사하는 컬러를 지정합니다. 제1포인트는 (150, 50)이고 컬러는 빨강(0xffff0000)입니다. 제2포인트는(250, 250)이고 컬러는 초록(0xff00ff00)입니다. 제3포인트는 (50, 250)이고 컬러는 청록(0xff00ffff)입니다. 이들 포인트는 각각 심도치는 0.5, RHW(Reciprocal of the W coordinate from the Homogeneous point;동차 좌표 w 성분의 역수)는 1.0입니다.
다음은 아래의 샘플코드에 나타낸 것처럼
if( FAILED( g_pd3dDevice->CreateVertexBuffer( 3*sizeof(CUSTOMVERTEX),
0 /*Usage*/, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL ) ) )
return E_FAIL;
정점 버퍼의 작성 후 다음 샘플 코드에 나온 것처럼 커스텀 정점 데이터로 그것을 채웁니다.
VOID* pVertices;
if( FAILED( g_pVB->Lock( 0, sizeof(vertices), (void**)&pVertices, 0 ) ) )
return E_FAIL;
memcpy( pVertices, vertices, sizeof(vertices) );
g_pVB->Unlock();
우선
그 다음 memcpy 를 사용해 정점은 정점 버퍼에 복사됩니다. 정점 버퍼에 정점이 읽어들여지면
이것으로 정점 버퍼에 정점이 격납됩니다. 다음은「 3 - 표시의 렌더링」에서 표시를 렌더링 하는 것을 다룹니다.

Direct3D로 기술된 애플리케이션에서는 정점을 사용해,지오메트리 쉐이프를 그립니다. 각 3차원(3D) 신에는 이들 지오메트리 쉐이프가 1개 이상 포함되어 있습니다. Vertices 샘플 프로젝트에서는 가장 단순한 쉐이프인 삼각형을 작성해 그것을 렌더링해 표시합니다.
이 튜토리얼에서는 다음 스텝에 따라 정점을 사용해 삼각형을 작성하는 방법을 보여줍니다.
=================
[DX9] 2.정점의 렌더링 1 - 커스텀 정점 타입의 정의
Vertices 샘플 프로젝트는 3개의 정점(vertex; vertices(복수형))을 사용해 2D 삼각형을 렌더링 합니다. 이것은 정점 버퍼(vertex buffer)의 개념, 다시말해 정점을 격납해 렌더링 하기위해 사용되는 Direct3D 오브젝트를 도입하고 있습니다. 정점의 정의하는 방법은 다양하며, 커스텀 정점 구조체와 대응하는 커스텀 플렉서블 정점 포맷(FVF)을 지정하는 등 다양한 방법이 있습니다. Vertices 샘플 프로젝트의 정점 포맷을 다음 샘플 코드에 나타냈습니다.
struct CUSTOMVERTEX
{
FLOAT x, y, z, rhw; // The transformed position for the vertex.
DWORD color; // The vertex color.
};
위의 구조체는 커스텀 타입의 포맷을 지정하고 있습니다. 다음은 버퍼 내의 정점 내용을 나타내는 FVF을 정의 하는 것입니다. 다음 샘플 코드는 위에서 작성된 커스텀 정점 타입에 대응하는 FVF를 정의하고 있습니다.
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
여기서 커스텀 벡터 포맷과 FVF가 지정됩니다. 다음은 「2 - 정점 버퍼의 설정」으로 정점 버퍼를 정점으로 채우는 것 입니다.
| 주의 |
|---|
| Vertices 샘플 프로젝트의 정점은 트랜스폼 되어있습니다. 다시말해, 이미 2D 윈도우 좌표화 되어있습니다. 이것은 포인트 (0,0)이 좌상측 모서리에 위치하며 X축 방향으로 증가하는 것은 오른쪽으로 향하는 것, Y축 방향으로 증가하는 것은 아래로 향한다는 것을 의미합니다. 또, 이것들의 정점은 강조 표시(lit) 되어있습니다. 다시말해 Direct3D 라이팅은 사용하지 않습니다만, 각각 컬러가 지정되어있습니다. |
실행중의 몇몇 포인트에서 애플리케이션을 셧 다운할 필요가 있습니다. DirectX 애플리케이션을 셧 다운하면 애플리케이션 윈도우가 파기될뿐 아니라 애플리케이션이 사용하고 있는 DirectX 오브젝트가 할당을 해제돼 그들로의 포인터는 무효화 됩니다. CreateDevice 샘플 프로젝트에서는 WM_DESTROY 메시지를 받으면 이 메시지를 처리하기 위해서 애플리케이션 정의 함수의 Cleanup을 호출합니다.
VOID Cleanup()
{
if( g_pd3dDevice != NULL)
g_pd3dDevice->Release();
if( g_pD3D != NULL)
g_pD3D->Release();
}
상기 함수는 오브젝트마다 IUnknown 메소드를 호출해 사용하고 있는 Direct3D 오브젝트의 할당을 해제합니다. 이 튜토리얼은 COM 룰을 따르므로 대부분의 오브젝트의 리퍼런스 카운트는 0이 되어 메모리로부터 자동적으로 소거됩니다.
셧다운 이외에도 데스크 톱의 해상도와 색상수를 변경할 경우 등 통상 실행중에 사용중의 Microsoft Direct3D 오브젝트를 파기해 다시 작성할 필요가 생길 수 있습니다. 그때문에 애플리케이션의 클린 업 코드는 필요에 따라 호출하도록 한 곳에 모아 유지할 것을 추천합니다.
이 튜토리얼에서는 디바이스를 작성하는 방법을 다뤘습니다.「튜토리얼2:정점의 렌더링」에서 정점을 사용해 지오메트릭 쉐이프를 그리는 방법을 알아봅니다.
신을 렌더링해 표시하기 위해 이번 샘플 코드에서는 백 버퍼를 청색으로 클리어해서 백 버퍼의 내용을 프론트 버퍼로 전송해 프론트 버퍼를 화면에 할당합니다.
신을 클리어하려면 IDirect3DDevice9::Clear 메소드를 호출합니다.
// Clear the back buffer to a blue color g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
일반적으로 렌더 타겟 전체를 커버하는 단일 사각형을 사용합니다. 이것을 실행하려면 첫번째의 파라메터를 0으로, 두번째의 파라메터를 NULL로 설정합니다. 세번째 파라메터는 메소드의 동작을 결정합니다. 렌더 타겟 서페이스(render-target suface), 관련지어진 심도 버퍼(associated depth buffer), 스텐실 버퍼(stencil buffer), 또는 3개의 임의의 조합을 클리어하기 위한 플래그를 지정할 수 있습니다. 이 튜토리얼에서는 심도 버퍼는 사용하지 않습니다. D3DCLEAR_TARGET 이 사용되고 있는 유일한 플래그입니다. 최초 3개의 파라메터는 렌더 타겟, 심도 버퍼, 그리고 스텐실 버퍼의 값의 클리어를 반영하도록 설정됩니다. CreateDevice 샘플 프로젝트에서는 렌더 타겟 서페이스의 클리어 컬러를 청(D3COLOR_XRGB(0,0,255))으로 설정합니다. 마지막 2개의 파라메터는 대응하는 플래그가 존재하지 않으므로 IDirect3DDevice9::Clear 메소드에서는 무시됩니다.
다음의 샘플 코드에 보이는 것처럼 CreateDevice 샘플 프로젝트는 뷰포트를 클리어한 후, Direct3D에 렌더링이 개시된 것을 통지하고 그 뒤 렌더링이 완료된 것을 통지합니다.
// Begin the scene g_pd3dDevice->BeginScene(); // Rendering of scene objects happens here // End the scene g_pd3dDevice->EndScene();
신이 렌더링되면 IDirect3DDevice9::Present 메소드를 사용해 표시합니다.
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
최초 2개의 파라메터는 복사할(source) 사각형과 복사될(destination) 사각형입니다. 이 샘플 코드에서는 이 2개의 파라메터를 NULL에 설정하는 것으로 백 버퍼 전체를 프론트 버퍼에 할당하고 있습니다. 3번째 파라메터는 이 프레젠테이션의 소스 윈도우를 설정합니다. 이 파라메터는 NULL에 설정되어있으므로 D3DPRESENT_PARAMETERS의 hWndDeviceWindow 멤버가 사용됩니다. 4번째의 파라메터는 DirtyRegion 파라메터로 일반적으로는 NULL에 설정됩니다.
이 튜토리얼의 마지막 단계로「5 - 셧 다운」에서 애플리케이션을 셧다운 해 봅시다.
애플리케이션 윈도우를 작성하고, Direct3D를 초기화 한 후는 언제라도 신을 렌더링 할 수 있습니다. 통상, Windows 애플리케이션은 각각의 메시지 루프 내에서 시스템 메시지를 모니터하고, 메시지가 큐에 존재하지 않으면 프레임을 렌더링 합니다. 다만, CreateDevice 샘플 프로젝트는 WM_PAINT 메시지가 큐에 들어올 때까지 대기해 애플리케이션에 그 윈도우 전체 또는 일부를 갱신할 필요가 있음을 통지합니다.
// The message loop.
MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
루프가 실행될 때마다 DispatchMessage 는 큐 내의 메시지를 처리할 MsgProc를 호출합니다.
WM_PAINT 가 큐에 들어오면 애플리케이션은 윈도우를 갱신할 애플ㄹ리케이션 정의 함수인 Render를 호출합니다. 이어서 클라이언트 영역 전체를 검증하기위해서 Win32함수ValidateRect 가 불립니다.
메시지 처리 함수의 샘플 코드는 다음과 같습니다.
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch( msg )
{
case WM_DESTROY:
PostQuitMessage( 0 );
return 0;
case WM_PAINT:
Render();
ValidateRect( hWnd, NULL );
return 0;
}
return DefWindowProc( hWnd, msg, wParam, lParam );
}
이것으로 애플리케이션은 시스템 메시지를 처리할 수 있습니다. 다음에는 「 4 - 신의 렌더링과 표시」에서 설명하는 것 처럼 표시를 렌더링 합니다.
© 2009 Microsoft Corporation. All rights reserved.
バージョン: 1734.00
CreateDevice 샘플 프로젝트는 윈도우 작성후에, WinMain 로부터 호출된 InitD3D 애플리케이션 정의함수 중에서 Direct3D 초기화를 실행합니다. 애플리케이션 윈도우의 적성후에는 언제라도, 신을 렌더링하기 위해 사용하는 Direct3D 오브젝트를 초기화 할 수 있습니다. 이 프로세스는 오브젝트를 작성하고 프레젠테이션 파라메터를 설정하고 마지막으로 Direct3D 디바이스를 작성합니다.
Direct3D 오브젝트의 작성 후 IDirect3D9::CreateDevice 메소드를 사용해 디바이스를 작성하고 디바이스, 타입, 모드 등의 열거 할 수 있습니다.
if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) ) return E_FAIL;
D3DPRESENT_PARAMETERS d3dpp; ZeroMemory( &d3dpp, sizeof(d3dpp) ); d3dpp.Windowed = TRUE; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
마지막 순서로 다음 코드의 예에 나타낸 것처럼 IDirect3D9::CreateDevice 메소드를 사용해 Direct3D 디바이스를 작성합니다.
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice ) ) )
상기 샘플코드는 D3DADAPTER_DEFAULT 플래그를 사용해서 디폴트 어댑터를 가진 디바이스를 작성합니다. 통상, 시스템은 복수의 그래픽 하드웨어 카드가 인스톨 되어있지 않은 한, 단일 어댑터만을 가집니다. DeviceType 파라메터에 D3DDEVTYPE_HAL을 지정하면, 소프트웨어 디바이스에 의한 하드웨어 디바이스 쪽이 우선됩니다. 이 샘플코드에서는 D3DCREATE_SOFTWARE_VERTEXPROCESSING 를 사용해서, 시스템에 소프트웨어 정점처리를 사용하도록 지시하고 있습니다. D3DCREATE_HARDWARE_VERTEXPROCESSING 를 지정해, 시스템의 하드웨어 정점처리를 사용하도록 하는 경우에는 하드웨어 정점처리 퍼포먼스가 대폭 향상하는 점에 주의해 주십시오.
이것으로 Direct3D 오브젝터는 초기화 되었습니다. 다음에는 「3 - 시스템 메시지의 처리」에서 설명하고 있는 것처럼, 시스템 메시지를 처리하는 메카니즘의 확보를 수행합니다.
Windows 애플리케이션이 실행될 때에 최초로 처리되어야할 것은 유저에게 표시하는 애플리케이션 윈도우를 작성하는 것입니다. 이것을 실행하려면 CreateDevice 샘플 프로젝트의 WinMain 함수로 실행을 개시합니다. 다음의 샘플 코드는 윈도우의 초기화를 실행합니다.
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
// Register the window class.
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
"Direct3D Tutorial", NULL };
RegisterClassEx( &wc );
// Create the application's window.
HWND hWnd = CreateWindow( "Direct3D Tutorial", "Direct3D Tutorial 01: CreateDevice",
WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
GetDesktopWindow(), NULL, wc.hInstance, NULL );
상기의 샘플코드는 표준 Windows 프로그래밍입니다. 샘플에서는 최초로 "Direct3D Tutorial"이라는 윈도우 클래스를 정의해 등록하고 있습니다. 클래스를 등록한 뒤 샘플 코드는 폭 300픽셀, 높이 300픽셀의 클라이언트 영역을 가지고 등록한 클래스를 사용하는 기본적인 최상위 윈도우를 작성합니다. 이 윈도우에는 메뉴와 자식 윈도우는 없습니다. 샘플에서는 WS_OVERLAPPEDWINDOW 윈도우 스타일을 사용해 윈도우 애플리케이션에 공통의 [최소화], [최대화], 그리고 [닫기] 버튼을 가진 윈도우를 작성합니다.(샘플이 풀스크린 모드로 실행될 경우, 추천되는 윈도우 스타일은 WS_EX_TOPMOST입니다. 이것은 작성된 윈도우를 최상위가 아닌 모든 윈도우 위에 배치해 윈도우가 비 액티브인 경우에도 최상위에 남아있도록 지정합니다.) 윈도우가 작성되면 표준의 Win32함수를 호출해 윈도우 표시를 갱신합니다.
애플리케이션 윈도우가 준비되었으면 「2 - Direct3D의 초기화」에서 설명하는대로 필수 Direct3D 오브젝트의 셋업을 개시할 수 있습니다.
DirectX Software Development Kit / 튜토리얼/ Direct3D 튜토리얼/ 튜토리얼 1: 디바이스의 작성 도움말에서
이 안에 다있음 ㅡㅅ-);
game_bt01.addEventListener(MouseEvent.CLICK,ox_01);
game_bt02.addEventListener(MouseEvent.CLICK,ox_02);
game_bt03.addEventListener(MouseEvent.CLICK,ox_03);
game_bt04.addEventListener(MouseEvent.CLICK,ox_04);
function ox_01(event:MouseEvent) :void {
game_bt01.alpha = 1;
stop();
setTimeout(function() { gotoAndPlay(26); }, 600);
}
function ox_02(event:MouseEvent) :void {
game_bt02.alpha = 1;
}
function ox_03(event:MouseEvent) :void {
game_bt03.alpha = 1;
}
function ox_04(event:MouseEvent) :void {
game_bt04.alpha = 1;
}

(gdb) help
List of classes of commands:
aliases -- Aliases of other commands
breakpoints -- Making program stop at certain points
data -- Examining data
files -- Specifying and examining files
internals -- Maintenance commands
obscure -- Obscure features
running -- Running the program
stack -- Examining the stack
status -- Status inquiries
support -- Support facilities
tracepoints -- Tracing of program execution without stopping the program
user-defined -- User-defined commands
Type "help" followed by a class name for a list of commands in that class.
Type "help" followed by command name for full documentation.
Command name abbreviations are allowed if unambiguous.
===========
(gdb) help all
ni -- Step one instruction
si -- Step one instruction exactly
stepping -- Specify single-stepping behavior at a tracepoint
tp -- Set a tracepoint at a specified line or function or address
tty -- Set terminal for future runs of program being debugged
where -- Print backtrace of all stack frames
ws -- Specify single-stepping behavior at a tracepoint
append binary -- Append target code/data to a raw binary file
append memory -- Append contents of memory to a raw binary file
append value -- Append the value of an expression to a raw binary file
awatch -- Set a watchpoint for an expression
break -- Set breakpoint at specified line or function
catch -- Set catchpoints to catch events
clear -- Clear breakpoint at specified line or function
commands -- Set commands to be executed when a breakpoint is hit
condition -- Specify breakpoint number N to break only if COND is true
delete -- Delete some breakpoints or auto-display expressions
disable -- Disable some breakpoints
enable -- Enable some breakpoints
future-break -- Set breakpoint at expression
hbreak -- Set a hardware assisted breakpoint
ignore -- Set ignore-count of breakpoint number N to COUNT
rbreak -- Set a breakpoint for all functions matching REGEXP
rwatch -- Set a read watchpoint for an expression
save-breakpoints -- Save current breakpoint definitions as a script
tbreak -- Set a temporary breakpoint
tcatch -- Set temporary catchpoints to catch events
thbreak -- Set a temporary hardware assisted breakpoint
watch -- Set a watchpoint for an expression
append -- Append target code/data to a local file
call -- Call a function in the program
disassemble -- Disassemble a specified section of memory
display -- Print value of expression EXP each time the program stops
dump -- Dump target code/data to a local file
inspect -- Same as "print" command
invoke-block -- Invoke the function associated with the block passed in as the first
mem -- Define attributes for memory region
output -- Like "print" but don't put in value history and don't print newline
print -- Print value of expression EXP
print-object -- Ask an Objective-C object to print itself
printf -- Printf "printf format string"
ptype -- Print definition of type TYPE
restore -- Restore the contents of FILE to target memory
set -- Evaluate expression EXP and assign result to variable VAR
undisplay -- Cancel some expressions to be displayed when program stops
whatis -- Print data type of expression EXP
x -- Examine memory: x/FMT ADDRESS
delete breakpoints -- Delete some breakpoints or auto-display expressions
delete checkpoints -- Delete specified checkpoints
delete display -- Cancel some expressions to be displayed when program stops
delete mem -- Delete memory region
delete tracepoints -- Delete specified tracepoints
disable breakpoints -- Disable some breakpoints
disable display -- Disable some expressions to be displayed when program stops
disable mem -- Disable memory region
disable tracepoints -- Disable specified tracepoints
dump binary -- Write target code/data to a raw binary file
dump ihex -- Write target code/data to an intel hex file
dump memory -- Write contents of memory to a raw binary file
dump srec -- Write target code/data to an srec file
dump tekhex -- Write target code/data to a tekhex file
dump value -- Write the value of an expression to a raw binary file
enable delete -- Enable breakpoints and delete when hit
enable display -- Enable some expressions to be displayed when program stops
enable mem -- Enable memory region
enable once -- Enable breakpoints for one hit
enable tracepoints -- Enable specified tracepoints
add-dsym -- Usage: add-dsym DSYM_FILE
add-kext -- Usage: add-kext KEXTBUNDLE
add-shared-symbol-files -- Load the symbols from shared objects in the dynamic linker's link map
add-symbol-file -- Usage: add-symbol-file FILE ADDR [-s <SECT> <SECT_ADDR> -s <SECT> <SECT_ADDR>
cd -- Set working directory to DIR for debugger and program being debugged
core-file -- Use FILE as core dump for examining memory and registers
directory -- Add directory DIR to beginning of search path for source files
edit -- Edit specified file or function
exec-file -- Use FILE as program for getting contents of pure memory
file -- Use FILE as program to be debugged
fix -- Bring in a fixed objfile
forward-search -- Search for regular expression (see regex(3)) from last line listed
list -- List specified function or line
load -- Dynamically load FILE into the running program
nosharedlibrary -- Unload all shared object library symbols
path -- Add directory DIR(s) to beginning of search path for object files
pwd -- Print working directory
remove-symbol-file -- Usage: remove-symbol-file FILE
reread-symbols -- Usage: reread-symbols
reverse-search -- Search backward for regular expression (see regex(3)) from last line listed
search -- Search for regular expression (see regex(3)) from last line listed
section -- Change the base address of section SECTION of the exec file to ADDR
symbol-file -- Load symbol table from executable file FILE
info address -- Describe where symbol SYM is stored
info all-registers -- List of all registers and their contents
info args -- Argument variables of current stack frame
info auxv -- Display the inferior's auxiliary vector
info breakpoints -- Status of user-settable breakpoints
info catch -- Exceptions that can be caught in the current stack frame
info checkpoints -- Help
info classes -- All Objective-C classes
info common -- Print out the values contained in a Fortran COMMON block
info copying -- Conditions for redistributing copies of GDB
info dcache -- Print information on the dcache performance
info display -- Expressions to display when program stops
info extensions -- All filename extensions associated with a source language
info files -- Names of targets and files being debugged
info float -- Print the status of the floating point unit
info fork -- Help
info frame -- All about selected stack frame
info functions -- All function names
info gc-references -- List the garbage collectors references for a given address
info gc-roots -- List the garbage collector's shortest unique roots to a given address
info handle -- What debugger does when program gets various signals
info interpreters -- List the interpreters currently available in gdb
info line -- Core addresses of the code for a source line
info locals -- Local variables of current stack frame
info mach-port -- Get info on a specific port
info mach-ports -- Get list of ports in a task
info mach-region -- Get information on mach region at given address
info mach-regions -- Get information on all mach region for the current inferior
info mach-task -- Get info on a specific task
info mach-tasks -- Get list of tasks in system
info mach-thread -- Get info on a specific thread
info mach-threads -- Get list of threads in a task
info macro -- Show the definition of MACRO
info malloc-history -- List the stack(s) where malloc or free occurred for the address
info mem -- Memory region attributes
info pid -- Process ID of the program
info plugins -- Show current plug-ins state
info program -- Execution status of the program
info registers -- List of integer registers and their contents
info scope -- List the variables local to a scope
info selectors -- All Objective-C selectors
info set -- Show all GDB settings
info sharedlibrary -- Generic command for shlib information
info signals -- What debugger does when program gets various signals
info source -- Information about the current source file
info sources -- Source files in the program
info stack -- Backtrace of the stack
info symbol -- Describe what symbol is at location ADDR
info target -- Names of targets and files being debugged
info task -- Get information on task
info terminal -- Print inferior's saved terminal status
info thread -- Get information on thread
info threads -- IDs of currently known threads
info tracepoints -- Status of tracepoints
info trampoline -- Resolve function for DYLD trampoline stub and/or Objective-C call
info types -- All type names
info variables -- All global and static variable names
info vector -- Print the status of the vector unit
info warranty -- Various kinds of warranty you do not have
info watchpoints -- Synonym for ``info breakpoints''
flushregs -- Force gdb to flush its register cache (maintainer command)
flushstack -- Force gdb to flush its stack-frame cache (maintainer command)
maintenance -- Commands for use by GDB maintainers
macro define -- Define a new C/C++ preprocessor macro
macro expand -- Fully expand any C/C++ preprocessor macro invocations in EXPRESSION
macro expand-once -- Expand C/C++ preprocessor macro invocations appearing directly in EXPRESSION
macro list -- List all the macros defined using the `macro define' command
macro undef -- Remove the definition of the C/C++ preprocessor macro with the given name
maintenance agent -- Translate an expression into remote agent bytecode
maintenance check-symtabs -- Check consistency of psymtabs and symtabs
maintenance cplus -- C++ maintenance commands
maintenance demangle -- Demangle a C++/ObjC mangled name
maintenance deprecate -- Deprecate a command
maintenance dump-me -- Get fatal error; make debugger dump its core
maintenance dump-packets -- Print the packet log buffer
maintenance i386-prologue-parser -- Run the i386 prologue analyzer on a function
maintenance info -- Commands for showing internal info about the program being debugged
maintenance internal-error -- Give GDB an internal error
maintenance internal-warning -- Give GDB an internal warning
maintenance interval -- Set the report of low-level interval timers
maintenance list-kexts -- List kexts loaded by the kernel (when kernel debugging)
maintenance packet -- Send an arbitrary packet to a remote target
maintenance print -- Maintenance command for printing GDB internal state
maintenance report-interval -- Report the summary values for all the low-level interval timers
maintenance set -- Set GDB internal variables used by the GDB maintainer
maintenance sharedlibrary -- Commands for internal sharedlibrary manipulation
maintenance show -- Show GDB internal variables used by the GDB maintainer
maintenance show-debug-regs -- Set whether to show variables that mirror the x86 debug registers
maintenance space -- Set the display of space usage
maintenance time -- Set the display of time usage
maintenance translate-address -- Translate a section name and address to a symbol
maintenance undeprecate -- Undeprecate a command
compare-sections -- Compare section data on target to the exec file
complete -- List the completions for the rest of the line as a command
create-checkpoint -- Create a checkpoint
load-plugin -- Usage: load-plugin <plugin>
monitor -- Send a command to the remote monitor (remote targets only)
now -- Go to latest original execution line
redo -- Forward to next checkpoint
remote -- Send a command to the remote monitor
rollback -- Roll back to a checkpoint
stop -- There is no `stop' command
undo -- Back to last checkpoint
update -- Re-read current state information from inferior
overlay auto -- Enable automatic overlay debugging
overlay list-overlays -- List mappings of overlay sections
overlay load-target -- Read the overlay mapping state from the target
overlay manual -- Enable overlay debugging
overlay map-overlay -- Assert that an overlay section is mapped
overlay off -- Disable overlay debugging
overlay unmap-overlay -- Assert that an overlay section is unmapped
advance -- Continue the program up to the given location (same form as args for break command)
attach -- Attach to a process or file outside of GDB
continue -- Continue program being debugged
detach -- Detach a process or file previously attached
disconnect -- Disconnect from a target
finish -- Execute until selected stack frame returns
handle -- Specify how to handle a signal
interrupt -- Interrupt the execution of the debugged program
jump -- Continue program being debugged at specified line or address
kdp-detach -- Reset a (possibly disconnected) remote Mac OS X kernel
kdp-kernelversion -- Print the version of a remote Mac OS X kernel
kdp-reattach -- Re-attach to a (possibly connected) remote Mac OS X kernel
kdp-reboot -- Reboot a connected remote Mac OS X kernel
kill -- Kill execution of program being debugged
next -- Step program
nexti -- Step one instruction
run -- Start debugged program
sharedlibrary -- Commands for shared library manipulation
signal -- Continue program giving it signal specified by the argument
start -- Run the debugged program until the beginning of the main procedure
step -- Step program until it reaches a different source line
stepi -- Step one instruction exactly
sym-dump -- Print the contents of the specified SYM-format symbol file
target -- Connect to a target machine or process
thread -- Use this command to switch between threads
until -- Execute until the program reaches a source line greater than the current
set annotate -- Set annotation_level
set architecture -- Set architecture of target
set args -- Set argument list to give program being debugged when it is started
set auto-raise-load-levels -- Set if GDB should raise the symbol loading level on all frames found in backtraces
set auto-solib-add -- Set autoloading of shared library symbols
set backtrace -- Set backtrace specific variables
set breakpoint -- Breakpoint specific settings
set call-po-at-unsafe-times -- Set whether to override the check for potentially unsafe situations before calling print-object
set can-use-hw-watchpoints -- Set debugger's willingness to use watchpoint hardware
set case-sensitive -- Set case sensitivity in name search
set charset -- Set the host and target character sets
set check -- Set the status of the type/range checker
set checkpointing -- Set automatic creation of checkpoints
set coerce-float-to-double -- Set coercion of floats to doubles when calling functions
set complaints -- Set max number of complaints about incorrect symbols
set confirm -- Set whether to confirm potentially dangerous operations
set cp-abi -- Set the ABI used for inspecting C++ objects
set darwin_kernel-debug-level -- Set level of verbosity for Darwin Kernel debugging information
set dcache-linesize-power -- Set the power for the cache line size
set debug -- Generic command for setting gdb debugging flags
set debug-file-directory -- Set the directory where separate debug symbols are searched for
set debugvarobj -- Set varobj debugging
set demangle-style -- Set the current C++ demangling style
set disable-aslr -- Set if GDB should disable shared library address randomization
set disable-inferior-function-calls -- Set disabling of gdb from running calls in the debugee's context
set disassembly-flavor -- Set the disassembly flavor
set disassembly-name-length -- Set the maximum length of characters to print in the symbol name in disassembly output
set download-write-size -- Set the write size used when downloading a program
set editing -- Set editing of command lines as they are typed
set endian -- Set endianness of target
set environment -- Set environment variable value to give the program
set exception-catch-type-regexp -- Set exception regexp
set exception-throw-type-regexp -- Set throw regexp
set exec-argv0 -- Set the value of argv[0] to be passed to the target executable
set exec-done-display -- Set notification of completion for asynchronous execution commands
set exec-pathname -- Set the pathname to be used to start the target executable
set extension-language -- Set mapping between filename extension and source language
set follow-fork-mode -- Set debugger response to a program call of fork or vfork
set forking-checkpoints -- Set forking to create checkpoints
set function-end-absolute -- Set if N_FUN end-of-function symbols use absolute addresses on non-GCC files
set gnutarget -- (Set the current BFD target
set height -- Set number of lines gdb thinks are in a page
set history -- Generic command for setting command history parameters
set host-charset -- Set the host character set
set inferior-auto-start-cfm -- Set if GDB should enable debugging of CFM shared libraries
set inferior-auto-start-dyld -- Set if GDB should enable debugging of dyld shared libraries
set inferior-bind-exception-port -- Set if GDB should bind the task exception port
set inferior-ptrace -- Set if GDB should attach to the subprocess using ptrace ()
set inferior-ptrace-on-attach -- Set if GDB should attach to the subprocess using ptrace ()
set inferior-tty -- Set terminal for future runs of program being debugged
set inform-optimized -- Set gdb informing you when you are debugging optimized code
set inlined-stepping -- Set the ability to maneuver through inlined function calls as if they were normal calls
set input-radix -- Set default input radix for entering numbers
set interpreter -- Set the interpreter for gdb
set kdp-debug-level -- Set level of verbosity for KDP debugging information
set kdp-default-host-type -- Set CPU type to be used for hosts providing incorrect information (powerpc/ia32)
set kdp-default-port -- Set default UDP port on which to attempt to contact KDP
set kdp-exception-sequence-number -- Set current sequence number for KDP exception transactions
set kdp-retries -- Set number of UDP retries for (non-exception) KDP transactions
set kdp-sequence-number -- Set current sequence number for KDP transactions
set kdp-timeout -- Set UDP timeout in milliseconds for (non-exception) KDP transactions
set kext-symbol-file-path -- Set the directory where kextutil-generated sym files are searched for
set language -- Set the current source language
set let-po-run-all-threads -- Set whether po should run all threads if it can't safely run only the current thread
set listsize -- Set number of source lines gdb will list by default
set locate-dsym -- Set locate dSYM files using the DebugSymbols framework
set logging -- Set logging options
set lookup-objc-class -- Set whether we should attempt to lookup Obj-C classes when we resolve symbols
set mach-o-process-exports -- Set if GDB should process indirect function stub symbols from object files
set max-checkpoints -- Set the maximum number of checkpoints allowed (-1 == unlimited)
set max-user-call-depth -- Set the max call depth for user-defined commands
set mi-show-protections -- Set whether to show "public"
set mi-timings-enabled -- Set whether timing information is displayed for mi commands
set minimal-signal-handling -- Set whether we run with a minimal signal handling set
set mmap-string-tables -- Set if GDB should use mmap() to read STABS info
set mmap-symbol-files -- Set if GDB should use mmap() to read from external symbol files
set objc-class-method-limit -- Set the maximum number of class methods we scan before deciding we are looking at an uninitialized object
set objc-exceptions-interrupt-hand-call-fns -- Set whether hitting an ObjC exception throw interrupts a function called by hand from the debugger
set objc-non-blocking-mode -- Set whether all inferior function calls should use the objc non-blocking mode
set objc-version -- Set the current Objc runtime version
set opaque-type-resolution -- Set resolution of opaque struct/class/union types (if set before loading symbols)
set os -- Set operating system
set osabi -- Set OS ABI of target
set output-radix -- Set default output radix for printing of values
set overload-resolution -- Set overload resolution in evaluating C++ functions
set pagination -- Set state of pagination
set pathname-substitutions -- Set string substitutions to be used when searching for source files
set print -- Generic command for setting how things print
set prompt -- Set gdb's prompt
set radix -- Set default input and output number radices
set read-type-psyms -- Set if we should create partial symbols for types
set remote -- Remote protocol specific variables
set remoteaddresssize -- Set the maximum size of the address (in bits) in a memory packet
set remotebaud -- Set baud rate for remote serial I/O
set remotebreak -- Set whether to send break if interrupted
set remotecache -- Set cache use for remote targets
set remotedevice -- Set device for remote serial I/O
set remotelogbase -- Set numerical base for remote session logging
set remotelogfile -- Set filename for remote session recording
set remotetimeout -- Set timeout limit to wait for target to respond
set remotewritesize -- Set the maximum number of bytes per memory write packet (deprecated)
set restore -- Set restore specific command settings
set scheduler-locking -- Set mode for locking scheduler during execution
set serial -- Set default serial/parallel port configuration
set sharedlibrary -- Generic command for setting shlib settings
set shlib-path-substitutions -- Set path substitutions to be used when loading shared libraries
set show_breakpoint_hit_counts -- Set if GDB should show breakpoint hit counts
set solib-absolute-prefix -- Set prefix for loading absolute shared library symbol files
set solib-search-path -- Set the search path for loading non-absolute shared library symbol files
set start-with-shell -- Set if GDB should use shell to invoke inferior (performs argument expansion in shell)
set step-mode -- Set mode of the step operation
set stop-on-solib-events -- Set stopping for shared library events
set struct-convention -- Set the convention for returning small structs
set subsystem-checkpointing -- Set checkpointing of subsystems
set symbol-reloading -- Set dynamic symbol table reloading multiple times in one run
set target-charset -- Set the target character set
set target-function-call-timeout -- Set a timeout for gdb issued function calls in the target program
set trust-readonly-sections -- Set mode for reading from readonly sections
set unwindonsignal -- Set unwinding of stack if a signal is received while in a call dummy
set use-array-stride -- Set if GDB should honor the 'stride' parameter of array types
set use-eh-frame-info -- Set if GDB should use the EH frame/DWARF CFI information to backtrace
set variable -- Evaluate expression EXP and assign result to variable VAR
set varobj-print-object -- Set varobj to construct children using the most specific class type
set varobj-runs-all-threads -- Set to run all threads when evaluating varobjs
set verbose -- Set verbosity
set watchdog -- Set watchdog timer
set width -- Set number of characters gdb thinks are in a line
set write -- Set writing into executable and core files
sharedlibrary add-symbol-file -- Add a symbol file
sharedlibrary apply-load-rules -- Apply the current load-rules to the existing shared library state
sharedlibrary cache-symfile -- Generate persistent caches of symbol files for a specified executable
sharedlibrary cache-symfiles -- Generate persistent caches of symbol files for the current executable state
sharedlibrary remove-symbol-file -- Remove a symbol file
sharedlibrary section-info -- Get the section info for a library (given by the index from "info sharedlibrary")
sharedlibrary set-load-state -- Set the load level of a library (given by the index from "info sharedlibrary")
sharedlibrary update -- Process all pending DYLD events
show annotate -- Show annotation_level
show architecture -- Show architecture of target
show args -- Show argument list to give program being debugged when it is started
show auto-raise-load-levels -- Show if GDB should raise the symbol loading level on all frames found in backtraces
show auto-solib-add -- Show autoloading of shared library symbols
show backtrace -- Show backtrace specific variables
show breakpoint -- Breakpoint specific settings
show call-po-at-unsafe-times -- Show whether to override the check for potentially unsafe situations before calling print-object
show can-use-hw-watchpoints -- Show debugger's willingness to use watchpoint hardware
show case-sensitive -- Show case sensitivity in name search
show charset -- Show the host and target character sets
show check -- Show the status of the type/range checker
show checkpointing -- Show automatic creation of checkpoints
show coerce-float-to-double -- Show coercion of floats to doubles when calling functions
show commands -- Show the history of commands you typed
show complaints -- Show max number of complaints about incorrect symbols
show confirm -- Show whether to confirm potentially dangerous operations
show convenience -- Debugger convenience ("$foo") variables
show copying -- Conditions for redistributing copies of GDB
show cp-abi -- Show the ABI used for inspecting C++ objects
show darwin_kernel-debug-level -- Show level of verbosity for Darwin Kernel debugging information
show dcache-linesize-power -- Show the power for the cache line size
show debug -- Generic command for showing gdb debugging flags
show debug-file-directory -- Show the directory where separate debug symbols are searched for
show debugvarobj -- Show varobj debugging
show demangle-style -- Show the current C++ demangling style
show directories -- Current search path for finding source files
show disable-aslr -- Show if GDB should disable shared library address randomization
show disable-inferior-function-calls -- Show disabling of gdb from running calls in the debugee's context
show disassembly-flavor -- Show the disassembly flavor
show disassembly-name-length -- Show the maximum length of characters to print in the symbol name in disassembly output
show download-write-size -- Show the write size used when downloading a program
show editing -- Show editing of command lines as they are typed
show endian -- Show endianness of target
show environment -- The environment to give the program
show exception-catch-type-regexp -- Show exception regexp
show exception-throw-type-regexp -- Show throw regexp
show exec-argv0 -- X
show exec-done-display -- Show notification of completion for asynchronous execution commands
show exec-pathname -- Show the pathname to be used to start the target executable
show extension-language -- Show mapping between filename extension and source language
show follow-fork-mode -- Show debugger response to a program call of fork or vfork
show forking-checkpoints -- Show forking to create checkpoints
show function-end-absolute -- Show if N_FUN end-of-function symbols use absolute addresses on non-GCC files
show gnutarget -- Show the current BFD target
show height -- Show number of lines gdb thinks are in a page
show history -- Generic command for showing command history parameters
show host-charset -- Show the host character set
show inferior-auto-start-cfm -- Show if GDB should enable debugging of CFM shared libraries
show inferior-auto-start-dyld -- Show if GDB should enable debugging of dyld shared libraries
show inferior-bind-exception-port -- Show if GDB should bind the task exception port
show inferior-ptrace -- Show if GDB should attach to the subprocess using ptrace ()
show inferior-ptrace-on-attach -- Show if GDB should attach to the subprocess using ptrace ()
show inferior-tty -- Show terminal for future runs of program being debugged
show inform-optimized -- Show gdb informing you when you are debugging optimized code
show inlined-stepping -- Show the ability to maneuver through inlined function calls as if they were normal calls
show input-radix -- Show default input radix for entering numbers
show interpreter -- Show the interpreter for gdb
show kdp-debug-level -- Show level of verbosity for KDP debugging information
show kdp-default-host-type -- Show CPU type to be used for hosts providing incorrect information (powerpc/ia32)
show kdp-default-port -- Show default UDP port on which to attempt to contact KDP
show kdp-exception-sequence-number -- Show current sequence number for KDP exception transactions
show kdp-retries -- Show number of UDP retries for (non-exception) KDP transactions
show kdp-sequence-number -- Show current sequence number for KDP transactions
show kdp-timeout -- Show UDP timeout in milliseconds for (non-exception) KDP transactions
show kext-symbol-file-path -- Show the directory where kextutil-generated sym files are searched for
show language -- Show the current source language
show let-po-run-all-threads -- Show whether po should run all threads if it can't safely run only the current thread
show listsize -- Show number of source lines gdb will list by default
show locate-dsym -- Show locate dSYM files using the DebugSymbols framework
show logging -- Show logging options
show lookup-objc-class -- Show whether we should attempt to lookup Obj-C classes when we resolve symbols
show mach-o-process-exports -- Show if GDB should process indirect function stub symbols from object files
show max-checkpoints -- Show the maximum number of checkpoints allowed (-1 == unlimited)
show max-user-call-depth -- Show the max call depth for user-defined commands
show mi-show-protections -- Show whether to show "public"
show mi-timings-enabled -- Show whether timing information is displayed for mi commands
show minimal-signal-handling -- Show whether we run with a minimal signal handling set
show mmap-string-tables -- Show if GDB should use mmap() to read STABS info
show mmap-symbol-files -- Show if GDB should use mmap() to read from external symbol files
show objc-class-method-limit -- Show the maximum number of class methods we scan before deciding we are looking at an uninitialized object
show objc-exceptions-interrupt-hand-call-fns -- Show whether hitting an ObjC exception throw interrupts a function called by hand from the debugger
show objc-non-blocking-mode -- Show whether all inferior function calls should use the objc non-blocking mode
show objc-version -- Show the current Objc runtime version
show opaque-type-resolution -- Show resolution of opaque struct/class/union types (if set before loading symbols)
show os -- Show operating system
show osabi -- Show OS ABI of target
show output-radix -- Show default output radix for printing of values
show overload-resolution -- Show overload resolution in evaluating C++ functions
show pagination -- Show state of pagination
show pathname-substitutions -- Show string substitutions to be used when searching for source files
show paths -- Current search path for finding object files
show print -- Generic command for showing print settings
show prompt -- Show gdb's prompt
show radix -- Show the default input and output number radices
show read-type-psyms -- Show if we should create partial symbols for types
show remote -- Remote protocol specific variables
show remoteaddresssize -- Show the maximum size of the address (in bits) in a memory packet
show remotebaud -- Show baud rate for remote serial I/O
show remotebreak -- Show whether to send break if interrupted
show remotecache -- Show cache use for remote targets
show remotedevice -- Show device for remote serial I/O
show remotelogbase -- Show numerical base for remote session logging
show remotelogfile -- Show filename for remote session recording
show remotetimeout -- Show timeout limit to wait for target to respond
show remotewritesize -- Show the maximum number of bytes per memory write packet (deprecated)
show restore -- Show current restore specific command settings
show scheduler-locking -- Show mode for locking scheduler during execution
show serial -- Show default serial/parallel port configuration
show sharedlibrary -- Generic command for showing shlib settings
show shlib-path-substitutions -- Show path substitutions to be used when loading shared libraries
show show_breakpoint_hit_counts -- Set if GDB should show breakpoint hit counts
show solib-absolute-prefix -- Show prefix for loading absolute shared library symbol files
show solib-search-path -- Show the search path for loading non-absolute shared library symbol files
show start-with-shell -- Show if GDB should use shell to invoke inferior (performs argument expansion in shell)
show step-mode -- Show mode of the step operation
show stop-on-solib-events -- Show stopping for shared library events
show struct-convention -- Show the convention for returning small structs
show subsystem-checkpointing -- Show checkpointing of subsystems
show symbol-reloading -- Show dynamic symbol table reloading multiple times in one run
show target-charset -- Show the target character set
show target-function-call-timeout -- Show the timeout for gdb issued function calls in the target program
show trust-readonly-sections -- Show mode for reading from readonly sections
show unwindonsignal -- Show unwinding of stack if a signal is received while in a call dummy
show use-array-stride -- Show if GDB should honor the 'stride' parameter of array types
show use-eh-frame-info -- Show if GDB should use the EH frame/DWARF CFI information to backtrace
show user -- Show definitions of user defined commands
show values -- Elements of value history around item number IDX (or last ten)
show varobj-print-object -- Abc
show varobj-runs-all-threads -- Set to run all threads when evaluating varobjs
show verbose -- Show verbosity
show version -- Show what version of GDB this is
show warranty -- Various kinds of warranty you do not have
show watchdog -- Show watchdog timer
show width -- Show number of characters gdb thinks are in a line
show write -- Show writing into executable and core files
backtrace -- Print backtrace of all stack frames
bt -- Print backtrace of all stack frames
down -- Select and print stack frame called by this one
frame -- Select and print a stack frame
return -- Make selected stack frame return to its caller
select-frame -- Select a stack frame without printing anything
up -- Select and print stack frame that called this one
info -- Generic command for showing things about the program being debugged
macro -- Prefix for commands dealing with C preprocessor macros
show -- Generic command for showing things about the debugger
apropos -- Search for commands matching a REGEXP
define -- Define a new command name
document -- Document a user-defined command
dont-repeat -- Don't repeat this command
down-silently -- Same as the `down' command
echo -- Print a constant string
help -- Print list of commands
if -- Execute nested commands once IF the conditional expression is non zero
interpreter-exec -- Execute a command in an interpreter
make -- Run the ``make'' program using the rest of the line as arguments
open -- Open the named source file in an application determined by LaunchServices
overlay -- Commands for debugging overlays
quit -- Exit gdb
shell -- Execute the rest of the line as a shell command
source -- Read commands from a file named FILE
up-silently -- Same as the `up' command
while -- Execute nested commands WHILE the conditional expression is non zero
target async -- Use a remote computer via a serial line
target child -- Unix child process (started by the "run" command)
target core-macho -- Use a core file as a target
target darwin-kernel -- Debug a running Darwin kernel; use 'attach' to begin
target exec -- Use an executable file as a target
target extended-async -- Use a remote computer via a serial line
target extended-remote -- Use a remote computer via a serial line
target macos-child -- Mac OS X child process (started by the "run" command)
target macos-exec -- Mac OS X executable
target remote -- Use a remote computer via a serial line
target remote-kdp -- Remotely debug a Mac OS X system using KDP
target remote-macosx -- Connect to a remote macosx device with shared library support using remote target
target remote-mobile -- Connect to a remote mobile device
tfind end -- Synonym for 'none'
tfind line -- Select a trace frame by source line
tfind none -- De-select any trace frame and resume 'live' debugging
tfind outside -- Select a trace frame whose PC is outside the given range
tfind pc -- Select a trace frame by PC
tfind range -- Select a trace frame whose PC is in the given range
tfind start -- Select the first trace frame in the trace buffer
tfind tracepoint -- Select a trace frame by tracepoint number
thread apply -- Apply a command to a list of threads
thread dont-suspend-while-stepping -- Usage: on|off <THREAD ID>|-port <EXPR>Toggle whether to not suspend this thread while single stepping the target on or off
thread resume -- Decrement the suspend count of a thread
thread suspend -- Increment the suspend count of a thread
actions -- Specify the actions to be taken at a tracepoint
collect -- Specify one or more data items to be collected at a tracepoint
end -- Ends a list of commands or actions
passcount -- Set the passcount for a tracepoint
save-tracepoints -- Save current tracepoint definitions as a script
tdump -- Print everything collected at the current tracepoint
tfind -- Select a trace frame;
trace -- Set a tracepoint at a specified line or function or address
tstart -- Start trace data collection
tstatus -- Display the status of the current trace data collection
tstop -- Stop trace data collection
while-stepping -- Specify single-stepping behavior at a tracepoint
unset environment -- Cancel environment variable VAR for the program
(gdb)