[완료] GTK+, Qt, Cairo에 대한 질문..

sbson719의 이미지

그래픽 엔진에 대해서 좀 살펴보면서..
위의 3가지에 대해서 말을 좀 들었는데요..
혹시 3개의 기능상 차이점이랄까요? 이런걸 비교해 주실수 있을까요?

제가 이해할때는..
GTK+, Qt는 UI 프레임워크로서..
쉽게 말하면 버튼, 콤보박스, 텍스트박스.. 이런것을 제공해 주는 라이브러리다라고 이해하고 있었고요..
Cairo는 2D 벡터 그래픽 엔진으로서.. 쉽게 말하면 화면에 선 그어주는 저수준 라이브러리라고 이해하고 있었거든요..
그런데 최근 이리저리 자료조사하면서 보니, 제가 잘못이해하고 있었던 것이 아닌가 하는 생각이 듭니다.

Qt를 보면 내부에 통신 모듈도 있고 다른 모듈도 가지고 있는것 같고..
그래서 UI라기 보다는 미들웨어나 OS수준으로 까지 봐야 하는게 아닌가 싶어보여요. -_-;;
그리고 GTK+는 UI 프레임워크 같아 보이는데.. 왜 Cairo를 필요로 하는 걸까요?
(자체 엔진이나 OS 제공 기능을 써도 될 것 같은데요..)
그렇다면 Qt도 그래픽 처리를 위해 Cairo같은 2D 그래픽 엔진을 포함하고 있는건가요?
도대체.. Cairo와 같은 엔진과.. GTK+, Qt같은 엔진의 차이는 무엇인가요?
Cairo가 GTK+, Qt같은 엔진의 하단에 위치하는 형태가 되는 건가요?

질문이 좀 난잡(?)하지만.. 고수님들의 조언 기다리겠습니다..
감사합니다~~

ganadist의 이미지

Quote:

GTK+, Qt는 UI 프레임워크로서..
쉽게 말하면 버튼, 콤보박스, 텍스트박스.. 이런것을 제공해 주는 라이브러리다라고 이해하고 있었고요..

맞습니다만 요샌 Qt는 UI프레임워크라기 보다는 플랫폼에 가깝다고 보시면 됩니다.

Quote:

Cairo는 2D 벡터 그래픽 엔진으로서.. 쉽게 말하면 화면에 선 그어주는 저수준 라이브러리라고 이해하고 있었거든요..

맞습니다.

Quote:

GTK+는 UI 프레임워크 같아 보이는데.. 왜 Cairo를 필요로 하는 걸까요?

이전에는 Gtk에서 해당 플랫폼의 저수준 드로잉 펑션을 직접썼습니다만, 요샌 여간해선 cairo를 사용합니다. 따라서 cairo가 포팅 되지 않은 플랫폼에서는 gtk+를 쓰기 힘듭니다.

Quote:

Qt도 그래픽 처리를 위해 Cairo같은 2D 그래픽 엔진을 포함하고 있는건가요?

네. Arthur라는 걸 쓰는 걸로 알고 있습니다.

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

sbson719의 이미지

제가 알고 있던 것이 많이 틀리지는 않았군요. ^^
답변 대단히 감사합니다~

ganadist의 이미지

Quote:

이전에는 Gtk에서 해당 플랫폼의 저수준 드로잉 펑션을 직접썼습니다만, 요샌 여간해선 cairo를 사용합니다. 따라서 cairo가 포팅 되지 않은 플랫폼에서는 gtk+를 쓰기 힘듭니다.

추가적으로 말씀 드리자면, gtk에서 실제로 드로잉을 맡는 부분은 GDK라는 부분입니다.
이전에는 gdk에서 직접 저수준 드로잉을 하였습니다. (실제로 GDK의 드로잉 펑션들은 단순히 해당 플랫폼의 드로잉 래퍼입니다.),
하지만 요새는 gdk에서 cairo컨텍스트를 얻어와서 실제 그림을 그립니다.

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.