그래픽

  
여러 Android 플랫폼 출시에서 그래픽 기능을 활용합니다.

이 표에는 androidx.graphics 그룹의 모든 아티팩트가 나열됩니다.

아티팩트 안정화 버전 출시 후보 버전 베타 버전 알파 버전
graphics-core 1.0.2 - - -
graphics-path 1.0.1 - - -
graphics-shapes 1.0.1 - - 1.1.0-alpha01
이 라이브러리는 2024년 12월 11일에 최종 업데이트되었습니다.

종속 항목 선언

Graphics의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용을 알아보려면 Google Maven 저장소를 읽어보세요.

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.

Groovy

dependencies {
    implementation "androidx.graphics:graphics-core:1.0.2"
    implementation "androidx.graphics:graphics-path:1.0.1"
    implementation "androidx.graphics:graphics-shapes:1.1.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.graphics:graphics-core:1.0.2")
    implementation("androidx.graphics:graphics-path:1.0.1")
    implementation("androidx.graphics:graphics-shapes:1.1.0-alpha01")
}

종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.

의견

제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.

새로운 문제 제출하기

자세한 내용은 Issue Tracker 문서를 참고하세요.

이 아티팩트의 출시 노트는 없습니다.

그래픽 버전 1.1

버전 1.1.0-alpha01

2024년 12월 11일

androidx.graphics:graphics-*:1.1.0-alpha01이 출시되었습니다. 버전 1.1.0-alpha01에는 이 커밋이 포함되어 있습니다.

새로운 기능

  • 기본 데모를 일반 도형 편집기로 재작업했습니다. 이를 통해 svg 경로에서 도형을 가져오고, 자동 프로세스에서 누락된 경우 감지된 지형지물을 수동으로 수정하고, 프로덕션 코드에서 사용할 수 있는 코드로 결과를 내보낼 수 있습니다. (I1ac13)
  • 도형 윤곽 진행률의 각도 측정을 곡선 길이 측정으로 대체합니다. 이렇게 하면 더 복잡한 도형을 모핑에 사용할 수 있습니다. (I75478) , I390dd
  • 더 많은 모프가 더 자연스럽게 보이도록 기능 매핑 알고리즘을 개선했습니다. (I83287)

API 변경사항

  • SVG 경로 가져오기 및 기능 직렬 처리기를 추가합니다. 일반적인 흐름은 다음과 같습니다.
    • SvgPathParser.parseFeatures()를 사용하여 svg 경로 (svg의 path 요소에 있는 d 속성의 값)를 List<Feature>로 변환합니다.
    • 이 값을 수정한 후 FeatureSerializer.serialize()를 사용하여 문자열로 직렬화할 수 있습니다.
    • 결과 문자열은 프로덕션 코드에서 FeatureSerializer.parse()로 가져와 사용할 수 있습니다.
    • 1단계와 2단계는 한 번만 실행되며 새 앱으로 실행할 수 있습니다. 프로덕션 코드는 3단계만 실행하면 됩니다. (I9bd00, b/371196190), (Ic3842), (If68ed), (I10251)
  • 다각형 지형지물 및 지형지물 유형을 노출합니다. 이제 List<Features>를 사용하는 기본 생성자로 더 많은 제네릭 RoundedPolygons를 만들 수 있습니다. 지형지물은 주로 3차 베지어 곡선 목록이지만 모프 알고리즘이 시작 도형과 끝 도형을 일치시키는 데 도움이 되도록 태그가 지정됩니다 (볼록한 모서리는 볼록한 모서리에 매핑되고 오목한 모서리는 오목한 모서리에 매핑됨). (I61e76), (I1fc5c)
  • watchosDeviceArm64 KMP 타겟 및 타겟 kotlin 1.9 지원을 추가합니다. (Icf15d, b/364652024)

버그 수정

  • 마지막 지형지물이 비어 있는 경우의 특이 사례를 수정했습니다. (I390dd)
  • RoundedPolygon 생성을 더 강력하게 만듭니다. (Ib862c, b/360888486)
  • RoundedPolygon 초기화의 버그를 수정했습니다. (I83ddb)
  • 다각형의 중심을 추정하는 알고리즘의 오류를 수정했습니다. (Ida147)

그래픽 도형 버전 1.0

버전 1.0.0

2024년 8월 21일

androidx.graphics:graphics-shapes:1.0.0, androidx.graphics:graphics-shapes-android:1.0.0androidx.graphics:graphics-shapes-desktop:1.0.0이 출시되었습니다. 버전 1.0.0에는 이 커밋이 포함되어 있습니다.

버전 1.0.0-rc01

2024년 7월 24일

androidx.graphics:graphics-shapes:1.0.0-rc01, androidx.graphics:graphics-shapes-android:1.0.0-rc01androidx.graphics:graphics-shapes-desktop:1.0.0-rc01이 출시되었습니다. 버전 1.0.0-rc01에는 이 커밋이 포함되어 있습니다.

버전 1.0.0-beta01

2024년 5월 1일

androidx.graphics:graphics-shapes:1.0.0-beta01, androidx.graphics:graphics-shapes-android:1.0.0-beta01androidx.graphics:graphics-shapes-desktop:1.0.0-beta01이 출시되었습니다. 버전 1.0.0-beta01에는 이 커밋이 포함되어 있습니다.

API 변경사항

  • 도형을 미리 회전하여 다른 지점에서 시작하도록 허용합니다. 이 변경사항을 통해 pillStar 도형이 경계의 기본이 아닌 지점에서 곡선을 시작할 수 있습니다. 이는 도형의 윤곽선에서 특정 위치에서 그리기를 시작하여 도형의 경로를 획 처리하는 애니메이션을 만들 때 유용할 수 있습니다. (Ifbb4d, b/324303807)
  • Morph에 calculateBounds() 함수를 추가했습니다. 이 함수는 RoundedPolygon의 동일한 함수와 동시에 실행됩니다. (I8a3b6, b/325463575)

버전 1.0.0-alpha05

2024년 2월 7일

androidx.graphics:graphics-shapes:1.0.0-alpha05, androidx.graphics:graphics-shapes-android:1.0.0-alpha05androidx.graphics:graphics-shapes-desktop:1.0.0-alpha05이 출시되었습니다. 버전 1.0.0-alpha05에 포함된 커밋을 확인하세요.

새로운 기능

  • 이제 라이브러리에서 이러한 둥근 모양/별표 모양을 쉽게 만들 수 있는 새로운 pill()pillStar() 함수를 제공합니다. 도형에 필요한 정확한 경계를 계산하는 새로운 API (이전 경계는 기본 베지어 곡선 앵커 및 제어점을 기반으로 한 추정치일 뿐)와 가능한 최대 경계도 있습니다. 이 경계는 도형이 컨테이너 내에서 회전될 경우 이를 포함하는 컨테이너의 크기를 결정하는 데 유용할 수 있습니다. (I71827)

API 변경사항

  • 이제 정확한 경계와 최대 경계를 검색할 수 있는 옵션이 더 많아졌습니다. (I6d49f, b/317286450)

버그 수정

  • 길이가 0인 곡선과 관련된 하위 수준 렌더링 문제로 인해 이러한 도형을 획이 있는 경로로 그릴 때 가끔 렌더링 아티팩트가 발생했습니다. 이 버그는 길이가 0인 모든 곡선을 삭제하여 수정되었습니다. 이러한 곡선은 도형에 필요하지 않으므로 도형에서 생성된 경로의 오버헤드도 줄일 수 있습니다.

버전 1.0.0-alpha04

2023년 12월 13일

androidx.graphics:graphics-shapes:1.0.0-alpha04, androidx.graphics:graphics-shapes-android:1.0.0-alpha04androidx.graphics:graphics-shapes-desktop:1.0.0-alpha04이 출시되었습니다. 버전 1.0.0-alpha04에 포함된 커밋을 확인하세요.

새로운 기능

  • 이 출시에는 버그 수정과 함께 여러 API 변경사항이 포함되어 있습니다.
  • 많은 API 변경사항으로 인해 Shapes 라이브러리가 KMP에 적합해졌습니다. 이렇게 하면 Android 이외의 코드 (예: Android에 종속되지 않는 Compose 코드)에서 더 쉽게 호출할 수 있습니다. 예를 들어 이전 PointF, Matrix, Path 유형과 같은 Android 유형은 API에 없습니다.
  • 또한 성능상의 이유로, 특히 객체 할당 (및 수집)을 최소화하기 위해 API 및 구현에 몇 가지 변경사항이 적용되었습니다. 예를 들어 PointF에서 별도의 Float 매개변수로 이동하면 이러한 정점을 보유하기 위해 많은 임시 PointF 구조를 할당하지 않아도 됩니다.

API 변경사항

  • Morph.asMutableCubicsMutableCubics를 반복하는 함수로 대체했습니다. PointTransformer 함수 인터페이스를 변경했습니다. 이제 Point의 x 및 y 좌표를 사용하고 변환된 x 및 y 좌표로 구성된 TransformedResult를 반환합니다. (I6719e)
  • 공개 Cubic 생성자를 삭제하고 팩토리 함수로 만들었습니다. (I409ce)
  • Android 전용 변환 및 그리기 API를 추가했습니다. (I079f6, b/292289543)
  • Android 종속 항목을 제거합니다. (Iadc1c, b/292289543)
  • 이제 앵커 및 컨트롤 속성 이름이 더 적절합니다. (If13bd, b/294562941)
  • PointF 매개변수가 Float 쌍으로 변경되었습니다. (Id4705, b/276466399, b/290254314)
  • 이제 progressMorph 그리기 명령어에 직접 전달됩니다. (Icdca2)

버그 수정

  • 큰 도형을 만들 때 발생하는 버그를 수정했습니다. (I4fd66, b/313497325)

버전 1.0.0-alpha03

2023년 6월 7일

androidx.graphics:graphics-shapes:1.0.0-alpha03이 출시되었습니다. 버전 1.0.0-alpha03에 포함된 커밋을 확인하세요.

API 변경사항

  • RoundedPolygon.rectangle() 함수를 추가했습니다. (I78e7e, b/280322189)
  • 이제 Star 및 Circle 함수가 대문자가 아닌 소문자로 표시되고 RoundedPolygon의 컴패니언 객체를 통해 호출됩니다.예를 들면 다음과 같습니다. RoundedPolygon.star(...)(I14735)

버그 수정

  • 평활화 버그를 수정했습니다. (Ibf894)
  • 시작 도형과 끝 도형이 동일할 때 발생하는 버그를 수정했습니다. 자르기에 사용할 수 있는 공간을 측면에서 더 잘 분배합니다. 먼저 사용 가능한 공간을 사용하여 모서리를 둥글게 처리한 다음 남은 공간이 있으면 매끄럽게 처리합니다. (Ibd320, b/277936300)

버전 1.0.0-alpha02

2023년 4월 19일

androidx.graphics:graphics-shapes:1.0.0-alpha02이 출시되었습니다. 버전 1.0.0-alpha02에 포함된 커밋을 확인하세요.

API 변경사항

  • 다각형 슈퍼클래스가 서브클래스 RoundedPolygon와 병합되었습니다. 이제 모든 다각형은 [선택사항] 원형 다각형입니다.
  • Star 함수 (이전과 같이 여전히 RoundedPolygon를 반환함)는 이제 이전 innerRadiusRatio 매개변수 대신 innerRadius 값을 사용합니다. 이 값은 기존 반지름 매개변수와 동일한 단위로 표시되므로 더 간단하고 일관된 방식으로 작업할 수 있습니다. 또한 내부 및 외부 반경에 동일한 숫자가 적용됨을 명확히 하기 위해 numOuterVertices 매개변수의 이름이 numVerticesPerRadius로 변경되었습니다.
  • 이전에는 CornerRounding.radius가 다각형의 크기에 비례한다고 문서화되었지만, 절대 값이었고 (그리고 그래야 합니다) 문서가 업데이트되었으며 최대 값 1.0으로 제한하는 주석이 수정되었습니다.

버전 1.0.0-alpha01

2023년 4월 5일

Graphics-Shapes는 둥근 다각형 도형을 쉽게 만들고 렌더링할 뿐만 아니라 다양한 도형 간에 간단하고 자동으로 모핑 (애니메이션)할 수 있는 새로운 라이브러리입니다.

androidx.graphics:graphics-shapes:1.0.0-alpha01이 출시되었습니다. 이 버전은 내부 브랜치에서 출시되었습니다.

새로운 기능

  • Polygon API를 사용하여 원하는 정점 개수로 정사각형 및 별 다각형을 만듭니다.
  • 선택적 CornerRounding 매개변수를 사용하여 모서리의 둥글게 처리 반경과 부드럽게 처리 매개변수를 지정하면 모서리가 둥근 다각형 도형이 만들어집니다.
  • 새로운 Morph(Polygon, Polygon) API를 사용하여 진행률을 0~1로 설정할 수 있는 '모프' 도형을 자동으로 계산하여 시작 도형과 끝 도형 간에 애니메이션을 적용합니다. 시간이 지남에 따라 진행되는 애니메이션을 만들어 모든 프레임에 결과를 그려 이러한 새로운 둥근 도형 간에 부드러운 애니메이션을 만듭니다.

그래픽 경로 버전 1.0

버전 1.0.1

2024년 5월 1일

androidx.graphics:graphics-path:1.0.1이 출시되었습니다. 버전 1.0.1에는 이 커밋이 포함되어 있습니다.

버그 수정

  • 컴파일러 플래그가 개선되었습니다.

버전 1.0.0

2024년 3월 6일

androidx.graphics:graphics-path:1.0.0이 출시되었습니다.

버전 1.0.0-rc01

2024년 2월 21일

androidx.graphics:graphics-path:1.0.0-rc01이 출시되었습니다. 버전 1.0.0-rc01에 포함된 커밋을 확인하세요.

버그 수정

  • API 34 미만에서 PathIterator의 성능을 개선했습니다. (Id4629)

버전 1.0.0-beta02

2024년 1월 10일

이 출시의 변경사항은 네이티브 코드에서 가정하여 필요 이상으로 컸던 라이브러리의 크기를 줄이는 데 관한 것입니다.

androidx.graphics:graphics-path:1.0.0-beta02이 출시되었습니다. 버전 1.0.0-beta02에 포함된 커밋을 확인하세요.

버그 수정

  • libandroidx.graphics.path.so의 크기를 96% 줄였습니다. (I71397)
  • libandroidx.graphics.path.so의 크기를 5% 줄입니다. (I2da7c)
  • androidx.graphics:graphics-path의 네이티브 구성요소를 43% 축소했습니다. (I8e40d)

버전 1.0.0-beta01

2023년 11월 29일

androidx.graphics:graphics-path:1.0.0-beta01이 출시되었습니다. 버전 1.0.0-beta01에 포함된 커밋을 확인하세요.

API 변경사항

버그 수정

  • 라이브러리가 타원을 처리하는 방식을 비롯한 다양한 수정사항 및 성능 개선사항

버전 1.0.0-alpha02

2023년 6월 7일

androidx.graphics:graphics-path:1.0.0-alpha02이 출시되었습니다. 이 버전은 내부 브랜치에서 개발되었습니다.

새로운 기능

  • Android 14 미리보기에서 실행할 때 문제를 일으키는 내부 플랫폼 버전 확인 문제를 수정했습니다. 버전 확인이 실패했지만 이전 버전에서 작업을 실행하는 메커니즘이 특히 Android 14에서 제대로 작동하지 않았습니다.

버전 1.0.0-alpha01

2023년 3월 22일

androidx.graphics:graphics-path:1.0.0-alpha01이 출시되었습니다. 버전 1.0.0-alpha01에 포함된 커밋을 확인하세요.

새로운 기능

  • 이 새 라이브러리를 사용하면 새 PathIterator API를 통해 경로 데이터를 쿼리할 수 있습니다. 호출자는 이 API를 사용하여 Path 객체의 모든 세그먼트를 반복하여 해당 세그먼트의 작업과 데이터를 결정할 수 있습니다.
  • 이 라이브러리는 Android 14 미리보기에서 도입된 유사한 API를 사용하지만 이 AndroidX 버전의 API는 API 21 이전 버전에서도 작동합니다.

그래픽 코어 버전 1.0

버전 1.0.2

2024년 10월 16일

androidx.graphics:graphics-core:1.0.2이 출시되었습니다. 버전 1.0.2에는 이 커밋이 포함되어 있습니다.

버그 수정

  • SurfaceControl 인스턴스가 해제된 후에도 시스템 컴포저에 의해 계속 관리되는 문제를 수정했습니다.
  • 지연 시간이 짧은 종속 항목이 삭제된 후 현재 표시된 HardwareBuffer 인스턴스가 해제되지 않는 문제를 수정했습니다.
  • 전면 버퍼 사용 플래그를 지원하지 않는 일부 Android 14 이상 기기에서 발생하는 깜박임 문제를 수정했습니다.

버전 1.0.1

2024년 9월 4일

androidx.graphics:graphics-core:1.0.1이 출시되었습니다. 버전 1.0.1에는 이 커밋이 포함되어 있습니다.

버그 수정

  • 메모리 리소스가 가끔 해제되지 않는 문제를 수정했습니다.

버전 1.0.0

2024년 5월 29일

androidx.graphics:graphics-core:1.0.0이 출시되었습니다. 버전 1.0.0에는 이 커밋이 포함되어 있습니다.

1.0.0의 주요 기능

  • 그래픽 코어 라이브러리의 공식 안정화 버전입니다. 1.0.0-rc01의 일부 버그 수정 및 성능 개선사항 포함

버전 1.0.0-rc01

2024년 4월 17일

androidx.graphics:graphics-core:1.0.0-rc01이 출시되었습니다. 이 버전은 내부 브랜치에서 개발되었습니다.

버그 수정

  • Android 14를 실행하는 특정 Android 기기에서 CanvasBufferedRendererAPI를 사용하여 파일 디스크립터가 두 번 닫힐 수 있는 문제를 수정했습니다.
  • FrameBuffer가 프레임 버퍼 인스턴스를 올바르게 삭제하지 않는 문제가 수정되었습니다.

버전 1.0.0-beta01

2023년 12월 13일

androidx.graphics:graphics-core:1.0.0-beta01이 출시되었습니다. 버전 1.0.0-beta01에 포함된 커밋을 확인하세요.

새로운 기능

  • 뷰 계층 구조 내에서 Android의 2D 그래픽 API (캔버스 + 페인트)를 사용하여 지연 시간이 짧은 렌더링을 지원하는 새로운 LowLatencyCanvasView API를 도입했습니다.
  • HardwareBuffer에 대한 하드웨어 가속 캔버스 렌더링을 지원하는 CanvasBufferedRenderer API를 도입했습니다. 이를 사용하여 Bitmap.wrapHardwareBuffer API를 사용하여 비트맵으로 변환할 수 있는 버퍼에 사용자 인터페이스의 일부를 그릴 수 있습니다.

API 변경사항

  • 선택적 펜스 매개변수가 포함되도록 CanvasBufferRenderer#releaseBuffer API를 업데이트했습니다. RenderResult#fence가 반환되는 경우를 설명하도록 문서를 업데이트했습니다. (If1ea7)
  • 코루틴을 활용하여 그리기 요청을 예약하는 것을 지원하도록 RenderRequestdraw 메서드를 추가했습니다. 실행자를 사용하는 이전 그리기 메서드의 이름을 drawAsync로 변경했습니다. isClosed() 메서드를 속성으로 리팩터링했습니다. (I5bff6)
  • CanvasBufferedRenderer.Builder#setBufferFormat에 직접 매핑되도록 버퍼 형식 매개변수를 CanvasFrontBufferRenderer에 노출했습니다. (I0f272)
  • HardwareBuffer로 하드웨어 가속 캔버스 렌더링을 처리하는 CanvasBufferedRenderer API를 만들었습니다. 이렇게 하면 HardwareBuffers의 스왑체인 깊이 구성과 함께 Android Q에 백포팅된 구현이 제공됩니다. ColorSpace 구성은 여전히 Android U+로 제한되지만 호환성 구현은 개발자를 대신하여 무작위 동작을 제공합니다. (I9b1d8)
  • 원활한 전환 또는 기본 전환을 위한 변경 전략과 함께 프레임 속도를 제어하려면 SurfaceControlCompat.TransactionsetFrameRate/clearFrameRate API를 추가합니다. (I6045c)
  • setDataSpace의 필수 API 수준을 Android T에서 Android Q로 낮췄습니다. (I59c34)
  • 버퍼가 더 이상 표시되지 않을 때 소비자가 상태를 정리할 수 있도록 GLFrameBufferRenderer API에 onBufferReleased 콜백을 추가했습니다. (I8a4e2)
  • 뷰 계층 구조 렌더링과 동기화되는 지연 시간이 짧은 콘텐츠 렌더링의 간단한 사용 사례를 지원하는 LowLatencyCanvasView를 만듭니다. 이렇게 하면 동기화된 렌더링과 지연 시간이 짧은 렌더링을 위해 각각 화면 밖으로/안으로 변환되는 SurfaceView 인스턴스를 내부적으로 관리하여 SurfaceView 관리와 관련된 복잡성을 완화할 수 있습니다. (I9253b)
  • CanvasFrontBufferedRenderer API에 색상 공간 구성 지원을 추가했습니다. 백 버퍼링된 SurfaceControl도 포함하도록 멀티 버퍼링 콜백을 업데이트했습니다. (I24bd9)

버전 1.0.0-alpha05

2023년 9월 6일

androidx.graphics:graphics-core:1.0.0-alpha05이 출시되었습니다. 버전 1.0.0-alpha05에 포함된 커밋을 확인하세요.

새로운 기능

  • GLFrameBufferRenderer API를 도입했습니다. 이렇게 하면 OpenGL 종속 항목, 스왑 체인 구성, 픽셀 형식, SurfaceControl 구성의 조합이 제공됩니다. (Ic775b)

API 변경사항

  • SurfaceHolder#Callbacks에서 크기를 파이프하기 위해 다양한 콜백 API에 width + height 매개변수를 추가했습니다. (I7f9fc)
  • 전면 및 다중 버퍼 레이어를 모두 지우는 clear API를 추가했습니다. (Ic1f95)
  • GLFrontBufferedRenderer 내에서 사용되는 스왑 체인의 기본 버퍼 유형을 구성하는 지원을 추가했습니다. (I07a13)
  • GLFrameBufferRenderer의 getter에 Kotlin 속성을, 최대 버퍼 항목에 IntRange 주석을, setFormat/setUsage에 각각 HardwareBufferFormartHardwareBufferUsage 주석을 추가했습니다. (Ief89e)
  • 출시 펜스를 제공하도록 SurfaceControl 트랜잭션의 setBuffer API를 업데이트했습니다. (Ice1bb)
  • 데이터 공간을 구성하고 확장된 밝기 범위를 설정하는 SurfaceControlCompat.Transaction API를 추가했습니다. (Ic378d)

버전 1.0.0-alpha04

2023년 6월 7일

androidx.graphics:graphics-core:1.0.0-alpha04이 출시되었습니다. 버전 1.0.0-alpha04에 포함된 커밋을 확인하세요.

새로운 기능

  • 기존 OpenGL 구현과 함께 android.graphics.Canvas API를 활용하는 지연 시간이 짧은 그래픽을 지원하기 위해 CanvasFrontBufferedRenderer를 도입했습니다.

API 변경사항

  • nullable HardwareBuffer 인스턴스가 상응하는 플랫폼 API를 미러링할 수 있도록 SurfaceControlCompat.Transaction#setBuffer API를 업데이트했습니다. (I173d7)
  • 백킹 스왑 체인에 2개 이상의 버퍼가 포함될 수 있으므로 이중 버퍼 렌더링을 참조하는 메서드의 이름을 대신 다중 버퍼로 바꿉니다. (I830d7)
  • CanvasFrontBufferedRenderer API를 만들어 3ps가 Canvas API를 사용하여 전면 버퍼링 렌더링 시스템을 활용할 수 있도록 합니다. (Ibfc29)

버그 수정

  • 상응하는 활동을 재개한 후 GLFrontBufferedRenderer가 콘텐츠를 렌더링하지 않는 문제를 수정했습니다.
  • 전면 버퍼링 콘텐츠가 조기에 삭제되는 문제를 수정했습니다.
  • 지연 시간이 짧은 그래픽 API가 출시된 후 SurfaceHolder.Callbacks가 삭제되지 않는 문제를 수정했습니다.

버전 1.0.0-alpha03

2023년 3월 22일

androidx.graphics:graphics-core:1.0.0-alpha03이 출시되었습니다. 버전 1.0.0-alpha03에 포함된 커밋을 확인하세요.

API 변경사항

  • 중간 스크래치 버퍼로 렌더링한 후 원래 대상을 다시 타겟팅하는 데 사용할 수 있는 프레임 버퍼 식별자와 함께 버퍼 너비/높이가 포함된 BufferInfo 객체를 제공하도록 GLFrontBufferedRenderer 콜백 구현을 업데이트했습니다. (I7fe20)
  • SyncFence 생성을 SyncFenceCompat의 정적 팩토리 메서드로 통합했습니다.
  • SyncFence 생성을 위한 SyncFenceCompat 팩토리 메서드를 사용하도록 eglDupNativeFenceFDANDROID의 공개 호환성 메서드를 삭제했습니다. 이는 모든 API 노출 영역이 API 수준과 관계없이 올바른 SyncFence 구현을 수신하도록 하기 위함입니다. (I849bb)
  • FrameBufferRendererSyncStrategy에 관한 문서가 추가되었습니다.
    • FrameBufferRenderer + FrameBuffer + FrameBufferPoolandroidx.graphics.opengl 패키지로 이동됨
    • SyncStrategyandroidx.graphics.opengl 패키지로 이동했습니다.
    • RenderCallback#onDraw 문서 업데이트됨
    • API 구현자가 FrameBuffer.close를 호출해야 하는 RenderCallback#obtainFrameBuffer 문서를 업데이트했습니다.
    • 소비자가 표시할 콘텐츠를 전달할 책임이 있음을 나타내도록 onDrawComplete를 업데이트했습니다.
    • 프레임워크를 미러링하기 위해 SyncFence 호환성 인터페이스/클래스를 androidx.hardware 패키지로 이동했습니다.
    • SyncFence API의 이름을 SyncFenceV19로 변경하고 비공개로 설정하여 가능한 경우 프레임워크의 SyncFence API를 활용하는 SyncFenceCompat로 사용을 통합했습니다. (I5149c)
  • GLFrontBufferedRenderer#cancelGLFrontBufferedRenderer#execute 메서드를 추가했습니다. 전자는 전면 버퍼에 대한 렌더링을 취소하고 전면 버퍼를 숨겨야 하는 손바닥 움직임 무시 시나리오에서 유용합니다. 후자는 렌더링을 예약하지 않고 GL 스레드에서 객체를 조작하는 시나리오에 유용합니다. (If0b7f)
  • 이중 버퍼 레이어에 직접 렌더링하는 API를 추가합니다. 이렇게 하면 재개 후 장면을 다시 렌더링하는 데 도움이 되며 소비자가 렌더링할 원하는 장면을 기반으로 전면 버퍼링 렌더링을 동적으로 활용할 시기를 선택적으로 결정할 수 있습니다. (Ied56c)
  • SurfaceView의 기존 메커니즘 외에도 다른 SurfaceControl 인스턴스에서 상위 SurfaceControl를 구성할 수 있도록 SurfaceControlCompat.Builder에 새 API를 추가했습니다. (I1d1b6)
  • 지원 중단된 숨겨진 함수의 반환 유형 null 허용 여부를 더 추가했습니다. (Ibf7b0)
  • Android 기기에서 HardwareBuffer 인스턴스를 EGLImage 인스턴스로 사용할 수 있는 EGLClientBuffer 객체로 가져오는 것을 지원하는지 쿼리하는 EGL_ANDROID_get_native_client_buffer 확장 프로그램 상수를 추가했습니다. (Iad767)
  • @JvmDefaultWithCompatibility 주석을 추가합니다. (I8f206)

버전 1.0.0-alpha02

2022년 11월 9일

androidx.graphics:graphics-core:1.0.0-alpha02가 출시되었습니다. 버전 1.0.0-alpha02에 포함된 커밋을 확인하세요.

API 변경사항

  • Android S에서 도입되었던 addTransactionCommitListenerRequiresApi 주석이 누락되는 문제를 수정했습니다. (I0a035)
  • 소비자가 현재 버퍼 너비/높이 외에도 꼭짓점 셰이더에 전달할 수 있는 변환 매트릭스를 제공하도록 onDraw<Front/Double> 버퍼 콜백을 업데이트했습니다. 소비자는 이러한 매개변수를 사용하여 OpenGL 렌더링 코드를 적절하게 사전에 회전해야 합니다. (I82f9e)

버그 수정

  • SurfaceControl 트랜잭션을 실행하기 전에 버퍼를 사전 회전하여 그래픽 지연 시간을 개선했습니다.
  • 오류 로그에 오류 300d(EGL_BAD_SURFACE)가 표시되는 문제를 수정했습니다.
  • 이전에 사용된 상응하는 활동이 재개된 후 GLFrontBufferedRenderer가 무효화되는 문제를 수정했습니다.
  • 에뮬레이터 및 ChromeOS 기기 지원을 늘렸습니다.
  • 버퍼링된 전면 레이어가 조기에 숨겨질 수 있는 문제를 수정했습니다.

버전 1.0.0-alpha01

2022년 10월 24일

androidx.graphics:graphics-core:1.0.0-alpha01이 출시되었습니다. 버전 1.0.0-alpha01에 포함된 커밋을 확인하세요.

새로운 기능

  • 그래픽 코어 AndroidX 라이브러리의 최초 출시입니다. 여기에는 스타일러스 입력과 같이 지연 시간이 짧은 사용 사례를 지원하는 API가 포함됩니다. OpenGL 사용에 관한 도우미 API도 추가되었습니다.

API 변경사항

  • 짧은 지연 시간과 고품질 렌더링 출력을 모두 달성하도록 전면 및 다중 버퍼 렌더링을 지원하는 GLFrontBufferedRenderer를 도입합니다.
  • SurfaceView, TextureView 등 다양한 Surface 제공업체를 위한 OpenGL 렌더링을 지원하는 GLRenderer API를 도입합니다.