Direct2D가 좋은 API 일까요?

MyAbby의 이미지

제가 그래픽 쪽 프로그램을 짤 때는 주로 폼이나(윈도우) 뷰(안드로이드)에 생성될 가상의 객체(GDI 등등)들을 만들고 Invalidate 하여 출력하는 식으로 만들었었습니다.
즉, GPU가 할 일을 CPU가 하도록 만들었죠. (안드로이드는 모르겠지만)

그래서 항상 제가 만든 그래픽 프로그램들은 객체 수가 적어도 CPU 사용이 20%를 기본으로 넘었습니다.
이 비효율을 줄일 방법이 없을까 해서 DirectX를 손대려 했는데, 너무 어려운겁니다! 디바이스니 랜더링이니 백터니...
그래서 Direct2D를 접하게 되었고, 확실히 코딩도 쉽고 리소스 점유도 낮아졌어요. 1080p 60fps 짜리 동영상을 뿌려도 cpu 점유가 5%를 안넘더군요.

제가 궁금한건, 정말 Direct2D가 좋은 API일까요? 아니면 PHP나 VB같이 접근하기만 쉽고 견고함이 없는 API일까요?
ms가 굳이 DX11부터 2D용 API를 따로 만들어 준 건 좋은 의도인 것 같은데, 이게 프렉탈로 확 변해버릴지 걱정입니다.

아니면 조금 시간을 들여서 OpenGL이나 DirectX 기반 엔진을 배워야 할까요?
굳지 답을 구하는 건 아닙니다. 다른 분들은 어떻게 생각하는지 알고싶어요.

x

winner의 이미지

Web Browser 들이 Windows 에서는 Direct2D 기반으로 작업한 것은 이유가 있을 겁니다.
제가 기억하기로 Firefox 가 Windows XP 에서도 GPU 가속을 지원하다가 Direct2D 기반으로 바꾸면서 지원을 중단했죠.

mirheekl의 이미지

어차피 DirectX나 오픈GL에서 말씀하신 부분에 대해 꼭 사용할 필요가 없는 사람까지도 배워야 된다는것은 계속해서 문제가 되어왔습니다. 그래서 Direct2D도 생겨난 것이고, 사실 이게 유일한 해결책인 것도 아닙니다. 어쨌든 Direct2D가 어떤 이유로든 폐기된다 하더라도 애초의 그 쉬운 사용법에 대한 수요는 계속된다는 것. 언젠가 폐기되더라도 분명 그땐 또다른 게 나와있을테니 그걸 쓰시면 되는 것입니다. 폐기될 코드가 아까우면 중간 라이브러리를 하나 더 만들어서 그부분만 교체하는 형태로 기술 교체에 유연하게 대비할 수 있도록 만들어 두시면 됩니다. 이미 그렇게 해두셨을 확률이 높아 보이고요.

물론 OpenGL이나 Direct3D등을 배워두면 좋긴 하겠지만, 그쪽을 직접 해야 할 당위성이 생기지 않는 한에는 그 시간에 메인 로직에 집중하는 편이 더 나을 수도 있습니다. (물론 시간이 많으시면 예외입니다.)

--

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.