Commands 창에는 애플리케이션에서 수행한 호출이 프레임 및 그리기 호출 또는 사용자 마커별로 그룹화되어 표시됩니다.
그림 1. OpenGL 또는 Vulkan 트레이스의 초기 뷰그림 2. OpenGL 트레이스 보기그림 3. Vulkan 트레이스 보기그림 4. Vulkan 트레이스에서 명령어 검색
운영
이 창에서 다음 작업을 수행할 수 있습니다.
작업
설명
결과 표시
선택한 명령어 또는 그룹 뒤의 상태가 반영되도록 다른 창을 업데이트하려면 명령어 또는 그룹을 클릭합니다.
명령어 계층 구조 펼치기 또는 접기
그룹화 왼쪽의 회색 삼각형을 클릭하거나 그룹화를 더블클릭하여 펼치거나 접을 수 있습니다.
검색
창 상단의 검색창에 문자열을 입력한 다음 Return 키를 누릅니다 (이전 이미지 참고). 다음 일치하는 항목을 찾으려면 막대가 선택되어 있는지 확인하고 Return 키를 다시 누릅니다.
정규 표현식 검색 패턴을 사용하려면 Regex 상자를 선택합니다.
예를 들어 glClear.*는 glClear() 및 glClearColor() 명령어 모두와 일치합니다. glBindBuffer().에서 사용되는 buffer: 2와 같은 명령어 매개변수 값을 검색할 수도 있습니다.
수정
명령어를 마우스 오른쪽 버튼으로 클릭하고 수정을 선택합니다. Edit 대화상자에서 하나 이상의 값을 변경하고 OK를 클릭합니다.
참고: 이는 Vulkan 명령에만 유효하며 OpenGL 명령에는 유효하지 않습니다.
상태 또는 메모리 정보 보기
상태 매개변수를 참조하는 명령어 인수(예: 텍스처 ID)를 클릭합니다. 상태 창에는 추가 정보가 표시됩니다.
메모리 주소 또는 포인터를 클릭하여 Memory 창을 엽니다.
참고: 이는 Vulkan 명령에만 유효하며 OpenGL 명령에는 유효하지 않습니다.
명령어 복사
창에서 항목을 선택하고 Control+C (또는 Command+C)를 눌러 인수 값과 함께 명령어를 복사합니다. 이 정보를 텍스트 파일에 붙여넣을 수 있습니다.
썸네일 확대
썸네일은 다음 이미지와 같이 호출 왼쪽에 표시됩니다. 썸네일 이미지 위로 커서를 가져가면 썸네일이 닫힙니다.
OpenGL ES 명령어 계층 구조
OpenGL ES 명령어는 Vulkan으로 변환되고 Vulkan 명령어는 분석됩니다. 따라서 OpenGL ES 명령어는 확장된 계층 구조에 표시되는 OpenGL ES 및 Vulkan 명령어와 함께 표시됩니다. 앞의 예에서는 RenderPass 아래에 여러 개의 glDrawElement 명령어가 있습니다. 두 번째 glDrawElements 명령어 계층 구조가 확장되어 OpenGL ES 명령어 및 DrawIndexed를 표시합니다. 이러한 두 계층 구조를 확장하여 관련 OpenGL ES 명령어와 변환된 Vulkan 명령어를 표시할 수 있습니다.
OpenGL ES와 Vulkan 간에는 일대일 관계가 없으므로 몇 가지 차이점이 있을 수 있습니다. 예를 들어 첫 번째 glDraw* 명령어 전에 발생하는 glClear 명령어는 RenderPass 앞에 표시됩니다. glClear의 계층 구조를 확장하면 Vulkan 명령어가 없습니다. 이는 Vulkan RenderPass 시작의 일부로 지우기가 지연되고 실행되기 때문입니다.
디버그 마커
앱에 따라 명령어 창에는 한 프레임 내의 매우 긴 명령어 목록이 포함될 수 있습니다. 탐색과 가독성을 높이기 위해 트리의 제목 아래에 호출을 그룹화하는 디버그 마커를 정의할 수 있습니다. 예를 들어 'Setup' 또는 'Render World'라는 이름의 그룹화를 포함할 수 있습니다.
디버그 마커가 사용 설정된 경우 명령어 창을 클릭하면 이 정보에 대한 링크가 표시됩니다. OpenGL ES에는 명령어를 그룹화하는 다음 API가 있습니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Commands pane\n\nThe Commands pane displays the calls made by the application, grouped by frame and draw call or by user markers.\n**Figure 1.**Initial View of either an OpenGL or Vulkan trace **Figure 2.**Viewing an OpenGL trace **Figure 3.**Viewing a Vulkan trace **Figure 4.**Searching for a command in a Vulkan trace\n\nOperations\n----------\n\nYou can perform the following operations in this pane:\n\n| Operation | Description |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Show result | Click a command or group to update the other panes to reflect the state after the selected command or group. |\n| Expand or collapse the command hierarchy | Click the gray triangle to the left of a grouping or double-click the grouping to expand or collapse it. |\n| Search | Type a string in the search bar at the top of the pane, and then press **Return** (see the preceding image). To find the next occurrence, make sure the bar is selected and press **Return** again. Select the **Regex** box to use a regular expression search pattern. For example, `glClear.*` matches both commands `glClear()` and `glClearColor()`. You can also search for command parameter values such as buffer: `2`, which is used in `glBindBuffer().` |\n| Edit | Right-click a command and select **Edit** . In the **Edit** dialog, change one or more values and click **OK**. Note: This is only valid for Vulkan commands, and not for OpenGL commands. |\n| View state or memory information | Click a command argument that refers to a state parameter, such as a texture ID. The **State** pane displays additional information. Click a memory address or pointer to open the **Memory** pane. Note: This is only valid for Vulkan commands, and not for OpenGL commands. |\n| Copy commands | Select items in the pane and press Control+C (or Command+C) to copy commands with their argument values. You can paste this information into a text file. |\n| Magnify thumbnail | The thumbnail appears to the left of a call as shown in the following image. Hover the cursor over the thumbnail to enlarge it. |\n\nOpenGL ES command hierarchy\n---------------------------\n\nOpenGL ES commands are translated to Vulkan, and the Vulkan commands are\nanalyzed. As a result, OpenGL ES commands are shown with both OpenGL ES and\nVulkan commands shown in the expanded hierarchy. In the preceding example, you can\nsee multiple `glDrawElement` commands under the `RenderPass`. The second\n`glDrawElements` command hierarchy was expanded, and shows **OpenGL ES Commands**\nand **DrawIndexed**. You can expand both of these hierarchies to show the\nrelated OpenGL ES commands, as well as the Vulkan commands that they were translated\ninto.\n\nBecause there isn't a one-to-one relationship between OpenGL ES and Vulkan,\nthere may be some differences. For example, a `glClear` command that occurs\nbefore the first `glDraw*` command appears before a `RenderPass`. If you expand\nthe hierarchy of the `glClear`, there will be no Vulkan commands. That is because\nthe clear will be deferred and done as part of starting the Vulkan `RenderPass`.\n\nDebug markers\n-------------\n\nDepending on your app, the **Commands** pane can contain a very long list of\ncommands within one frame. For better navigation and readability, you can define\ndebug markers that group calls together under a heading in the tree. This could\ninclude a grouping, for example, named \"Setup\" or \"Render World.\"\n\nIf debug markers are enabled, click the **Commands** pane to reveal a\nlink to this information. OpenGL ES has the following APIs to group commands:\n\n| EXTENSION / VERSION | PUSH | POP |\n|-----------------------------------------------------------------------------------------------|-------------------------|------------------------|\n| [KHR_debug](https://www.khronos.org/registry/gles/extensions/KHR/KHR_debug.txt) | `glPushDebugGroupKHR()` | `glPopDebugGroupKHR()` |\n| [EXT_debug_marker](https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt) | `String` | `String` |\n| [OpenGL ES 3.2](https://www.khronos.org/opengles/sdk/docs/man32/html/glPopDebugGroup.xhtml) | `String` | `String` |\n\nVulkan has the following APIs to group commands:\n\n| EXTENSION / VERSION | PUSH | POP |\n|-------------------------------------------------------------------------------------------------------------------------------|-------------------------|------------------------|\n| [VK_EXT_debug_marker](https://github.com/KhronosGroup/Vulkan-Docs/blob/1.0/doc/specs/vulkan/chapters/VK_EXT_debug_marker.txt) | `glPushDebugGroupKHR()` | `glPopDebugGroupKHR()` |"]]