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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

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

Q&A

解決済

9回答

9707閲覧

Windowsでwin32APIを使わずにカメラ機能やウィンドウを表示、画像表示が行えるようにするために。

carnage0216

総合スコア194

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

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

0グッド

1クリップ

投稿2018/02/14 11:15

編集2018/02/14 11:38

わたしはプログラムを使ってハードを隅々まで制御したいと考えています。何がしたいかを申しますとwin32apiを呼び出して利用するのではなく、直接書き込んだりしたいと思っていました。しかし、win32APIはオープンソースではないためAPI関数呼び出すことはできてもAPI関数を改造したり書き込むことはできないということでした。なので、
今までOPENCVの顔認識においてwin32APIなどの説明や使い方を散々聞いてきましたが、
OSがWindowsでwin32APIを使わずにwin32APIのようなカメラ入力が出来たりウィンドウ、画像表示ができるプログラムは無いか探しています。

<行いたいこと>
欲を言えばwin32APIを使わないでOPENCVが使えるようにOPENCV内のソースコードでwin32APIを利用した
カメラ機能やウィンドウのサイズ変換の部分をwin32APIではない別のカメラ機能やウィンドウのサイズを変更ができるwin32APIのようなプログラムに置き換えてみたいです。
そして以上のようなことは難易度は考慮しないとして可能か不可能か知りたいです。

自身で調べる限りではOSがLinuxでならGTK+などがありました。
もちろんLinuxで使われているGTK+をOPENCV内のソースコードでwin32APIを利用した
カメラ機能やウィンドウのサイズ変換の部分などをGTK+のプログラムで置き換えて使うことで、OPENCVが使えるならば私のやりたいこととしては成功と言えます。(私の本当にしたかったことができたといってもいいです。)
またwin32apiは書き込んだり見ることは出来ませんがGTK+は見ることも書き込むこともできるので個人として隅々まで制御できる欲が満たせます。(なにか間違ったことを言っているかもしれませんが。)

いつもいつもわがままで何を言っているかわけのわからないことばかり言って申し訳ありません。自分でも調べたり基礎を学習して少しでも皆様に何がやりたいかをお伝えしたいのですが私の理解力と地頭が悪いせいで皆様に不快な思いをさせてしまっています。

無知ゆえに厳しいお言葉などは見ていてつらいですが自業自得です。
どうか今回の質問にかんしてどうかよろしくお願いいたします。
付き合いきれないと思われても仕方ありませんが、どうかよろしくお願いします。

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

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

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

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

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

guest

回答9

0

言われているWin32APIというのがどこまでの話なのか判別できませんが、
「ハードを隅々まで制御」というのがハードを完全に自身のアプリの管理下に置いて直接動かしたい、というのであればそれは無理です。
ハードウェアの管理はOSが行う仕事なので完全な管理下に置く方法はないです。
ドライバを根本から書けばそれなりに制御できると思いますが、滅茶苦茶大変で膨大な知識が必要な割にはやることはコマンドのやり取り程度です。

WindowsはLinuxと違いOSの機能にウィンドウの管理機能がくっついていて入れ替えできないので、その枠組みの外でウィンドウを出す方法はありません。
また、画像はウィンドウの中に表示するので同じ理由で表示できません。
Windows上で動いている以上、どんなライブラリを使用しようともその最下層(OSのカーネルとやり取りする部分)には必ずWindowsのAPIがいます。
それがOSというものです。GTK+はただのラッパーにすぎません。

完全に制御したい気持ちはわからなくはないですが、PCではハード1つ動かすにも様々な知識が必要になるのでRaspberryPiなどの組み込みの世界でやったほうがいいと思います。

投稿2018/02/14 12:03

toki_td

総合スコア2850

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

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

carnage0216

2018/02/14 12:11

そうですか。 どうもありがとうございます。 諦めてwin32apiを使います。
guest

0

わたしはプログラムを使ってハードを隅々まで制御したいと考えています。

今時のPCは、ユーザーがハードウェアを隅々まで制御するには複雑すぎるのですよ。私が最初に手にしたプログラミング可能なコンピューターは8bitマシンで、今とは桁違いに規模が小さかったので、当時はハードウェアを隅々までしゃぶり尽くしたものですが(改造とかもいろいろやったな……)、今のPCではまず無理です。
ハードウェアをいじるには、様々なI/F規格(例えばPCIとかUSBとか)を覚えてそれに従ってデバイスと通信しなければいけません。当然通信プロトコル(コマンド等)はデバイス固有なので、デバイスのメーカーからマニュアルを入手しなければ通信のプログラムが書けません。メーカーに「マニュアルちょうだい」と言っても、くれるとはとても思えません。

<行いたいこと>
欲を言えばwin32APIを使わないでOPENCVが使えるようにOPENCV内のソースコードでwin32APIを利用した
カメラ機能やウィンドウのサイズ変換の部分をwin32APIではない別のカメラ機能やウィンドウのサイズを変更ができるwin32APIのようなプログラムに置き換えてみたいです。
そして以上のようなことは難易度は考慮しないとして可能か不可能か知りたいです。

難易度を考慮しないのなら不可能なことなんてありはしませんよ。現にマイクロソフトは作っていますし、LinuxのGPU制御も誰かが作ったものですし。

ただ、実質的には不可能だと思います。あなたがやりたいことはGPUのデバイスドライバーを作ることとほぼ同じです。私はその手の仕事をしたことがないのでよくは判りませんが、GPUベンダーと何らかの契約をしないとドライバー作成に必要な情報は得られないと思います。それに、自力でハードウェア制御を行うとなると、Windowsのウィンドウシステムとは完全に切り離されますので、それに代わる何かを作る必要があります。前にも書いたような気がするのですが、そこまで行くと、結局OSを作るのと同じレベルになります。
知識のない状態から始めて、一体何年かかるのか見当も付きません。


今もってあなたが何をやりたいのか判りません。なぜそこまでAPIを使うことを避けようとするのか。

あなたがハードウェアをいじってやろうとしていることは、すべてAPIを使ってできることです。APIやOpenCVのようなライブラリーを使えばたった1行で実現できる機能を、なぜ何年もかけて自作しようとするのか、さっぱり判りません。

投稿2018/02/14 14:12

編集2018/02/14 14:23
catsforepaw

総合スコア5938

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

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

0

貴方の行動を登山に例えると

どこの山にも登ったことのない登山の素人が
何もわからないまま、既存の開拓済みの登山ルートを無視して、
手探りの暗中模索で冬のエベレストの登頂を目指していることです。

近場の簡単な登山(サンプル改造)から始めるか、まずは先人(ライブラリ)を学んでください。

自作自作といいますが、自作は結構たいへんです。


かなり端折ってますが、図で解説してみます。
イメージ説明
OpenCV→Win32 API→KERNEL→デバイスドライバ→(USB 通信プロトコル)→カメラ
プログラム内で何らかの処理を行った時はこういう形でデータが流れると思ってください。

今回質問者様が Win32 APIを経由したくないとのことなので、
カメラ機能やウィンドウのサイズ変換を自作する時は、Win32 APIからKERNELの流れの部分を自作する必要があります。

投稿2018/02/14 11:47

編集2018/02/14 15:02
umyu

総合スコア5846

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

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

carnage0216

2018/02/14 11:50

あの、自作はまだ考えていません。opencvのプログラム内のwin32apiの部分をGTK+のようなオープンソースであり、ウィンドウ表示や画像表示がで置き換えて、opencvを実行したいと考えています。
carnage0216

2018/02/14 15:40

やはりLinuxのOSで勉強したほうがいいですね。 win32APIは公開されていないので自作するのは破滅的です。
episteme

2018/02/15 00:29

注: LinuxではOSとWindow-systemが分離してるんで、OSのソースいっくら読んでもウィンドウの'ウ'の字も出てこないからね♪
carnage0216

2018/02/15 15:22

え?そうなんですか。全く知りませんでした。 ではwindows -systemを読めばいいのでは? まあ、windows のAPIみたいに見れないのならば意味はありませんが。
carnage0216

2018/02/16 03:07

ちなみに、文字などを表示するためにprintf関数を使ってデイスプレイに文字を表示しますがこれに関してはWindowsのAPIは働いているのでしょうか? 調べる限りはprintf関数とは関係なくAPIを使って文字などを表示することもできるようですが。
carnage0216

2018/02/16 03:08

あの、LinuxのOSと分離しているWindows-systemはオープンソースなのでしょうか?
episteme

2018/02/16 07:35

ふぉろーありがとです。 ...ま、そゆわけで何しようがしまいにはWin32-APIにたどり着くですよ。 さもなくば strlen みたいな"副作用のないタダの計算"であるか。
carnage0216

2018/02/16 13:58

返信が遅くなり申し訳ありません。 asmさん、epistemeさんどうもありがとうございます。
umyu

2018/02/19 19:28

>epistemeさん >asmさん フォロー回答ありがとうございました。
guest

0

ベストアンサー

プログラムを使ってハードを隅々まで制御したいと考えています。

本当に隅々まで制御したいならハードウェアの知識が不可欠かつドライバ設計/実装の途方もないスキルが必要だが、その覚悟はおありだろうか。

隅々のレベルが判然としません。

GTK+で目的が達成されたとしても、GTK+だってその内部でLinuxのAPIモロモロを呼び出すことで実現しています。からくりは Win32-API + OpenCV と変わらんのです。

投稿2018/02/14 11:34

編集2018/02/14 11:37
episteme

総合スコア16614

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

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

carnage0216

2018/02/14 11:42

GTK+がオープンソースであり、win32APIと置き換えて使えるならばGTK+の内部のAPIを学びたいと思います。 私が言う隅々までとは例えばカメラを使うための関数などが自作でき、ちゃんと使用するPCでカメラを使う際に自作したカメラの関数がちゃんと機能できるレベルの隅々です。 説明が下手で申し訳ありません。
episteme

2018/02/14 11:49

GTK+はOSではありません。OSの上にかぶさったGUIのframework。Win32やLinuxと同列にはありません。 > カメラを使うための関数などが自作でき、ちゃんと使用するPCでカメラを使う際に自作したカメラの関数がちゃんと機能できるレベルの隅々です。 OpenCVでカメラからのframeを切り出してしたcv::MatはRGBの並んだ行列でしかないので、Win32APIなどなどで自由に加工し処理して自作のアプリに貼りつけるのなんざ簡単ですよ。imshowだけがframe表示の唯一の手段ではありません。
carnage0216

2018/02/14 11:54

そうなのですか。方法を教えて下さりどうもありがとうございます。 osがWindowsでwin32apiを使わないでopencvのプログラム(画像表示、ウィンドウ出力)などを実行する方法はあるのでしょうか?
episteme

2018/02/14 11:59 編集

OSの提供するAPIを使わないことにどんな意味/意義があるのかしら? カメラ入力にOpenCV使った時点で(間接的に)OSのAPIを呼びまくってますよ?
carnage0216

2018/02/14 12:09

確かにその通りです。 WindowsのAPIを呼び出した時、APIをいじれたりはやはり出来ないのですよね。 まぁ、いじる必要性もないですが。
episteme

2018/02/14 12:23 編集

「いじる」にもいろいろあるっしょ。なにが目的でいじりたいのかな? 目的/目標なしにただ"できたらいいのに"なら、まずWin32-APIでもOpenCVでもなんでもいいから、使いまくって不満を列挙してはいかが? やりかたを知らないだけかもよ?
carnage0216

2018/02/14 12:56

くどいと思われてしまうかもしれませんが、cv::imshowが出力ウィンドウの幅と高さを変更するためのwin32APIを呼び出していると思います。その時に出力ウィンドウの幅と高さを変更するためのwin32API自体に幅と高さの値を入力できるのでしょうか? cv::imshowが幅と高さの値を受け渡してくれるのでそんなことをする必要はないですが。
episteme

2018/02/14 13:48 編集

申し訳ないが、なにを言っているのかさっぱりわからない。 > 出力ウィンドウの幅と高さを変更するためのwin32API自体に幅と高さの値を入力できるのでしょうか? 誰が? あなたが? 必要ないとわかっていてそれを訊く意図は? 何がしたい?
carnage0216

2018/02/14 14:41

わたしがwin32API自体に呼び出すとかではなく直接、幅と高さの値を書き込みたいです。特に意図はないです。たぶんできないと思いますが。
episteme

2018/02/14 23:59 編集

> 直接、幅と高さの値を書き込みたいです。 何に? あらかじめ言うておくが、video-device(GPUとか)に対してできることは極論すれば画面上に点を打つことだけだ。ウィンドウの位置/大きさ/重なり具合等々はすべてWindowsの管理下にある。
carnage0216

2018/02/15 06:07

何にはwin32API自体です。 win32API自体がソースコードならば、そのwin32API自体のソースコードに幅、高さの値を書き込みたいと思っただけです。
episteme

2018/02/15 06:15

うん、Windowsがウィンドウを管理している限り、幅と高さはWin32が管理するメモリの"どこか"にあるに違いないから、そいつを書き換えればいいかもしれない。 残念ながら、OSが扱うメモリは通常のユーザー・プロセスでは手の出せない領域にある。 そうでないと困るよね、ハッカーの餌食になっちゃうからね。
carnage0216

2018/02/15 06:47

そうですね。windowsのOS(API)自体は見ることもできませんし、リバースエンジニアリング?すると犯罪行為になってしまうので行えません。なのでおとなしくAPIを呼び出すことにします。 どうもありがとうございました。
episteme

2018/02/15 08:01

Linuxでも大差ないよ。いぢくるのは自由だけど何の保証もないしupdateされたらアウトやし。 OSいぢくりたいってココロザシは賞賛するけど、"少なくとも"コードがまともに読めて書けるようになってからね。
carnage0216

2018/02/15 08:05

はい、確かに毎回updateされるたびに書き直したり、APIを読んでいてはさすがに面倒ですね。 まあ、APIの行っていることも実際はちょっとしたことなのかもしれません。 精進いたします。
TaroToyotomi

2018/02/15 13:12

ふと思ったのですが、imshow()で表示したいウィンドウのサイズを変えたいだけなら所望のサイズのimageを自分で用意して、そのimageにカメラから取り込んだ画像を上書きしてimshow()に放り込めばいいだけでは?
TaroToyotomi

2018/02/15 17:09

そうなんですか、もう目的がわからないですね。
carnage0216

2018/02/15 17:14

目的は元の質問から情報を得るたびに変わってきてしまい元の質問とはかけ離れたところに(私のせいで)いってしまうため、わけのわからないことになっています。 すいませんでした。
guest

0

ハードを隅々まで制御したいのでしたら、そのハードウェアのデータシートをちゃんと読まないといけません。入手して読んでみましたか?英語で何10ページあるか何100ページあるか、ハードウェアによっていろいろですが。
とりあえず、USB video classのドキュメントを紹介します。
USB_Video_Class_1_5.zip

投稿2018/02/14 14:33

a_saitoh

総合スコア702

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

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

0

わたしはプログラムを使ってハードを隅々まで制御したいと考えています。

この排他的な独占欲はOS上で動くアプリケーションを作成する以上満たされることはないでしょう。
なぜなら、複数のプロセスが同時に動く現代のOSの場合
ハードウェアに対して命令するのはあなたが作成したプロセスだけとは限らないからです。
なんらかの制約があり協調する事が求められます。
完全に制御したい場合OS自作する事が必要でしょう

LinuxのAPIがオープンだからといって改造すると
当然ながらあなたの環境でしか動かないものが出来上がります。
どうしても必要なら考えはしますが、いささかメリットに対してデメリットの方が大きいように思います。

実のところ、win32apiを用いずに目標を達成することは不可能ではないかもしれません。
ただし、その結果生まれるのは
非常に強く環境に依存し、win10で動いたものがwin8で動くとは限らない
それどころかwindows update毎に動かなくなる可能性があり、
同windowsでもマシン構成等で動かない可能性のある
アプリケーションです。
しかも、ライセンス的に真っ黒でマルウェアの作成くらいにしか使えません。

win32apiを用いることでwin10からwin95までソースコードレベルの互換性は保たれます。

win32apiはきちんとドキュメントの公開されているAPIです。
cv::imshowを追いかける事のできなかったアナタにとってLinuxのAPIとどれだけの違いがあるのか疑問です。

投稿2018/02/15 07:42

asm

総合スコア15147

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

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

carnage0216

2018/02/15 07:51

おっしゃる通り、cv::imshowすら自己解決できなかった私が改造もできないであろうAPIについていろいろ言うのはおかしな話です。 asmさんから言われたことは痛いほど正論である故、ただただ素直に認めるしかありません。
guest

0

現実的ではない云々は、他の方がたくさん書かれていますので、学習を目的として、ある程度リッチなGUI OSから、低レベルなハードウェア制御を行う、という趣向で考えてみます。

まず、一旦Windowsは忘れましょう。そこでRaspberry Piの登場です。Raspberry PiにはLinuxの一種であるRaspbianというOSをインストールします。これを使うと、特権ユーザー権限ではなく、一般ユーザー権限で、GPIO(要するにマイコンボード基板にある電気信号のピン)をON/OFF制御することができます。それら電気信号の入出力をどう使うかは、すべて貴方次第ということになります。

Raspberry Piは X Window System というGUI環境が動作しますから、例えば、GPIOにつないだセンサーから値を読み取って、画面にグラフを書く、等ということも可能になります。ただ、カメラの制御は、相当複雑になりますから、こればかりは、Video for Linux というライブラリ(これもAPIの一種)のお世話にならざるを得ません。

ここで、私が先日Qiitaで書いた記事を紹介(宣伝)させていただきます。

▼ Raspberry Pi でGUIアプリ開発、初めての手引き
https://qiita.com/soramimi_jp/items/b2b238d1537dbb99abea

▼ Raspberry Pi のカメラモジュールで撮影
https://qiita.com/soramimi_jp/items/0127855cfa27a26b4c80

GUIアプリから外部ハードウェアを制御する最初の一歩になるのではないかと思います。

Windowsに話を戻すと、そもそもWindowsには通常、一般ユーザーが特権無しで自由に利用できるGPIOの様なものがありませんので、外部ハードウェアを制御するには、どうしても、デバイスドライバを利用するような仕組みが必要になってきます。

ひとつ勘違いしないでほしいのは、ユーザーが自由にハードウェアを制御できるからLinuxが優れているとか、デバイスドライバやAPIが面倒だからWindowsは劣っている、ということではない、という点です。Linuxだって、普通のPCで使う場合には、外部とのやりとりはデバイスドライバを介するのが当然です。一般ユーザー権限で直接ハードウェアを制御できたら、一瞬でセキュリティが破綻してしまいます。Raspberry Piはどちらかというと学習用途を主眼に開発されているので、その辺はちょっと甘く設計されています。ですので、わざわざデバイスドライバを作るまでもない、簡単なハードウェア制御は、一般ユーザー権限でもできる程度にお手軽になっています。

投稿2018/02/20 08:56

soramimi

総合スコア12

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

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

carnage0216

2018/02/20 10:47

ありがとうございます。 ラズパイのGPUは難しいのでCPUで並列処理を過去に考えたことがありました。 ちなみに紹介していただいたサイトのカメラはCPUでの処理でしょうか? CPUの並列処理などを使っているのかと思い質問しました。
soramimi

2018/02/20 11:30

カメラの制御まで自前で…となると、現実的ではない、となり、ご質問が堂々めぐりになってしまいますから、カメラから画像を取得する処理に限れば、Video for LinuxのAPIを使うのが良いでしょう。Raspberry Piのカメラでの画像取り込みが、CPUなのかGPUなのか、というのはこの際どうでもいいことで(←ここが質問者が疑問に感じられている要点かもしれませんが)、画像を取り込む方法が既に存在していて、ライブラリもあって、すぐに利用できる状態にあることこそが、もっとも重要なことです。カメラに搭載されているイメージセンサーを独自制御するにはどうしたら良いか、をお尋ねでしたら、teratailはたぶん相応しくありません。イメージセンサーのデータシートを隅々まで読んで試行錯誤するのは、ドライバ開発者がやればいいことです。質問者が、ドライバより低位層にご興味があるなら、イメージセンサーを作っているメーカー(SONYなど)で修行を積むしかないでしょう。手段はともかく、取り込んだ画像をどう処理するかは、CPUでやってもいいですし、Raspberry PiはOpenCVにも対応していますので、それを利用しても良いでしょう。Raspberry Piで性能が足りなければ、ネットワークを介して、画像処理専用マシンに丸投げしてやれば、NVIDIAやAMDのGPUも使い放題ですから、Raspberry Piで全部やろうとは思わないことです。汎用的なハードウェア制御を行いたいのか、カメラや画像処理に限定した処理を行いたいのか、最終的に実現したいことこそが重要で、CPUかGPUかというのは、やりたいことの要件を定義したあとで考えましょう。
guest

0

面白そうな話題なので自分も混ぜてください。

大学の頃まだPC9801等がバリバリの現役だった時代、ソースのあるBASICのゲームを他のマシン(UNIXなど)で動かせないかなと考え、描画関係のBASIC関数(命令)をすべてCで書き直したことがあります。

描画関係のみに絞るなら、大学生が片手間にちょこっとやって出来る程度の作業量です。
たとえば2点間を結ぶLINE等の命令を大学の図書室にあったPC向けの数学の本を参考に指定した位置にドットを置いていく命令を自前で作っていきました。
LINEだけではなくほかにも様々な描画命令がありますが、それらも基本的にそんな難しくなかったです。
※BASICにはなかったかもしれませんが、ベジエ曲線なんかも自前でやってみて大変面白いと思った記憶があります。

BASICとWin32APIとの違いはありますが、描画関数の数はそんなに違う物でもないでしょう。
座標系をいじる部分は行列などを駆使するので頭がこんがらがったりしそうではありますが。

最終的に「指定した座標に指定した色のドットを打つ」という命令になるのでそこの部分だけWin32APIを使うなりすれば、お求めのことが出来ると思います。
自前で表示の代用としてBitmapを用意し、そのBitmapにドットを打っていくのでもいいし。

ただし。
実行速度がとんでもなく遅くなったと言うことは申し添えておきます。

投稿2018/02/20 03:25

jodel_jp

総合スコア10

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

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

0

ちょっと面白い話なので参戦してみます。
(質問者さんには面白くないでしょうが)

質問者さんが言ってるのは「自由に何でもしたいんだ!」って事なんでしょうかね?

「**がしたいのにWin32のAPIの制限を受ける」
とかの不満かと思ってましたが、単純に「Win32を使いたくない」だけにみえたので。

でもWindowsを使っててハードウェアを触る限りはWin32の制限を間違いなく受けるでしょう。
制限って言うよりは使わずには作れないって言うべきかもしれません。

仮にWin32を使わずにハードを直接触ろうとした時点でWindowsのセキュリティを通過できないのではないでしょうかね?
ドライバ自体も今は署名がちゃんとしてないようなオリジナルドライバは動作させるのも難しかったような気がします。
ドライバ周りを触ることが私はないのでいい加減なこと言ってるかもしれませんが・・・

でもLinuxでもそれは一緒です。
多少ライセンス的に緩く作れる事はあるかもしれませんが「LINUXで開発する」以上は「LINUXの制限は必ず受ける」のです。

結局何もかも全てOS側の制限を受けずに自由にやりたかったら自作OSを作るしか無い!
でもそうすると他者さんも言ってますが、最低限PCのBootからコマンドラインが立ち上がるまでの部分すら自分で組まないと・・・・
APIを呼べば一行で出来る事を、自分で機械の認識からデータの取得まで全て自分でやることになります。

私は想像するだけでぞっとするのでそもそも試してみる気も無いのですが。

昔X68000の頃にイメージユニット関係を触ろうと思いましたがその頃の私には難易度が高すぎて断念した情けない想い出がよみがえりました・・・汗

投稿2018/02/14 17:37

landy77

総合スコア1614

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

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

carnage0216

2018/02/15 06:05

回答どうもありがとうございます。私の伝え方が悪かったようですが、決してwin32APIを使いたくないわけではありません。ただLinuxのAPIは改造したりいじれたり、中身がどのような構造になっているのか知ることができて勉強になるのですが、windowsのAPIでは見ることができないブラックボックスのままであるので自分の好きなようにいじったり改造できないためあまり好きではないのです。 LinuxのAPIは自分なりに改造して根っからの好きなものに仕上げあれるので好きなのです。ブラックボックスの部分もありませんし。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問