質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2852閲覧

画像ライブラリ 表示

ryohasegawa

総合スコア437

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/07/02 06:08

前々回前回と画像の入出力ライブラリについて質問していますが、画像の表示について質問します。

仮に、画像を表示するライブラリを作成できたとして、そのライブラリでは画像を読み込むじゃないですか、その画像を表示する際は、画像のフォーマットに応じた方法でデータを取得(jpegやbmpから)し、表示するとおもうのですが、表示する時は画像フォーマットから何らかの形に変えて表示しているわけじゃないですか?
その取り出した形はどの画像から取り出しても共通した形なんですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

取り出したものを表示するにもライブラリを使うんですね。それはOSが提供しているライブラリであったり、それをラップしたライブラリであったりします。
そしてそれぞれ要求するフォーマットは違います。RGBRGB...という8bit幅の配列だったりBGRBGR...という配列だったり、はたまたRRRRR...BBB...GGG...という配列だったり・・・。また座標空間も右手座標系だったり左手座標系だったりと様々です。そもそもRGBじゃないこともあります。
そしてもっというと画像入力(というよりdecode)ライブラリも内包した、ファイル名を指定するだけで表示できちゃうライブラリも存在します(ほとんどのGUIライブラリやゲームライブラリ)。

まあしかし殆どの場合CPUで画面描画することはないので結果的にDirectXないしOpenGLを叩くことになります。つまり自分でOS作らない限りはOSの支援なしに画像表示することはできません(読み込みだってファイルシステム扱うのにOSの支援が必要やろという話はさておき)。

以下に例を示します。分け方は適当なので当てにしないように。

GPU操作

  • DirectX
  • OpenGL

GPU操作 wrapepr library(Low Layer)

  • GLUT(deprecated): OpenGLのラッパー、OpenGLの開発者いわくOpenGL直接叩くなとのこと、なお[lunatea

さんが言及しているように](https://teratail.com/questions/81709)deprecatedになったので使うべきではない

OS Level GUI library

  • Win32API(GDI)
  • X Window System <- この位置は妥当か????
  • Wayland <- この位置は妥当か????
  • .NET Framework <- この位置は妥当か????

X11
Wayland
Windows

Wrapper Game Library

  • DxLib
  • open Frameworks
  • SFML
  • Unity

Wrapper GUI Library

  • GLFW: deprecatedになったGLUTの後継。GUI作成機能もある・・・?
  • MFC
  • ATL
  • Windwos Form
  • WPF
  • GTK/GTK+/GTK#
  • Qt
  • Imgui
  • Xamarin
  • (OpenCV): GUIライブラリじゃないけど最低限の表示くらいはできるので

追記

質問履歴を遡ってみると・・・うーむ。トータルするとやりたいことは

  • GUIアプリケーションを作りたい
  • 画像や動画を表示させたい
  • マルチプラットフォームで
  • 画像の入出力についても学びたい、作りたい
  • C++がいい

というあたりか・・・?まあGUIについてはImguiとかQtを使っとけという思い。凝ったGUIがいらないならゲームライブラリだけどSFMLもよい。ただC++でGUIとか作るもんじゃないと思うので、Xamarinはいいぞ。

いずれにせよGUIはOSとの緊密な連携によってなされるものでどうやってもOS依存コードは発生することを抑えたい。

投稿2017/07/02 06:37

編集2017/07/03 17:50
yumetodo

総合スコア5850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2017/07/02 06:42

画像フォーマットから取り出したデータもまた、それぞれ異なったフォーマットを持っているわけですか?
yumetodo

2017/07/02 06:45

画像読み込みに利用したライブラリが吐き出す形式とそれを表示するためのライブラリが要求する形式は往々にして違うので変換作業が必要になることが多いです。
ryohasegawa

2017/07/02 06:52

なるほど、windows.h を読み込んで表示する関数などは、その両方を行っているので、パス指定だけで表示してくれるんですか・・・
yumetodo

2017/07/02 06:54

>windows.h を読み込んで表示する関数 ん?そんな簡単な関数はなかったと記憶しているんですが・・・
ryohasegawa

2017/07/02 07:00

関数じゃなかったです。 C#のGUIのイメージビューみたいなやつです。
yumetodo

2017/07/02 07:06

なんだろう、それは。WindowFormとかWPFとかGTK#とかXamarinのことだろうとは思うけど・・・
ryohasegawa

2017/07/02 07:12

WindowForm ですかね? それは、また話が変わってくるのですか?
yumetodo

2017/07/02 07:14

>それは、また話が変わってくるのですか? ん?どういう意味でしょう?いずれもGUIライブラリですよね?(上の画像見たほうがわかりやすいか
ryohasegawa

2017/07/02 07:18

画像を見ても・・・・わからないです。 理解できません。
yumetodo

2017/07/02 07:21

ええっと >なるほど、windows.h を読み込んで表示する関数などは、その両方を行っているので、パス指定だけで表示してくれるんですか・・・ に戻りますか。まあ多分WindowFormとのことでしたが、あれはGUIライブラリで、画像の読み込み処理と画像の描画処理(と簡単に言うけど実際にはWindowつくったりとか色々しているのは上の図のごちゃごちゃさで伝わると思う)の両方をを内包しています。
ryohasegawa

2017/07/02 07:25

表示はそのWindowFormでできるのは、両方を内包しているからですか。 別の形式に変換などをしようちすると、ライブラリが必要なんですよね?
yumetodo

2017/07/02 07:31

変換そのものをライブラリでやることは・・・まああるけど、業界標準のこれ!ってのがあるわけではないです(というのはほとんどがmemcpyをforで回せば事足るので)
ryohasegawa

2017/07/03 22:37

なるほど、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問