[問題] 如何知道struct內的變數名稱
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
arm-linux
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
openGL es2
問題(Question):
是這樣的~
我在用一些openGL的API實作時
有需要用到一個變數 EGLNativePixmapType
去追了一下相關的.h檔之後
發現他的定義是這樣子的:
typedef struct _FBPixmap * EGLNativePixmapType;
可是我想再繼續往下追的時候
卻發現找不到 _FBPixmap的定義了 @@
利用grep去rootfs/usr/include底下都沒有
我在想會不會是他已經被包在library裡了
請問有甚麼辦法可以知道這個結構裡面有哪些變數名稱嗎?
例如說有個結構
struct _aa {
int num;
char ch;
} AA;
然後我可以利用objdump之類的工具知道AA裡有變數num, ch之類的 @@
爬了文好像都沒看到
就來這請教大家囉~
在此也先跟各位說聲謝謝囉!
--
▍ ▍ ╯╰ ╯╰ ◢◣ ◢◣ 我最愛的 柏柏龍~ 柏柏龍~
◢██◣ ╮╭ ▎▎╮╭ ▎▎ 柏柏龍~ 柏柏龍~
⊙ ⊙ ◢ ◣ ⊙ ⊙ ◣ 人人心中都有柏柏龍~
≡ ▼ ≡ ▲▲ ● ● ≡ ▼ ≡ ■ ■ ■ ■ 憤怒就永遠不會消失~
皿 ◢⊙⊙◣ ≡皿 ≡ 皿 炸是最美的擁有~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.179.30
→
07/03 20:12, , 1F
07/03 20:12, 1F
→
07/03 20:25, , 2F
07/03 20:25, 2F
→
07/03 20:25, , 3F
07/03 20:25, 3F
推
07/03 22:23, , 4F
07/03 22:23, 4F
→
07/04 00:17, , 5F
07/04 00:17, 5F
→
07/04 01:07, , 6F
07/04 01:07, 6F
推
07/04 01:25, , 7F
07/04 01:25, 7F
推
07/04 01:31, , 8F
07/04 01:31, 8F
→
07/04 01:48, , 9F
07/04 01:48, 9F
推
07/04 02:14, , 10F
07/04 02:14, 10F
→
07/04 03:47, , 11F
07/04 03:47, 11F
→
07/04 03:49, , 12F
07/04 03:49, 12F
→
07/04 07:53, , 13F
07/04 07:53, 13F
→
07/04 07:58, , 14F
07/04 07:58, 14F
→
07/04 08:00, , 15F
07/04 08:00, 15F
→
07/04 08:01, , 16F
07/04 08:01, 16F
→
07/04 08:02, , 17F
07/04 08:02, 17F
→
07/04 08:04, , 18F
07/04 08:04, 18F
先感謝以上的回覆 @@
是這樣子的
原先我在畫openGL的時候
最後render出來的東西可以利用這個API
glReadPixel(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, buffer)
來幫我把畫出來的東西存到buffer
但是這樣有個問題是效能會超慢的
網路上有人提到可以利用eglCreatePixmapSurface
建立一塊off-screen的window
把render的東西畫在這裡
最後搭配 eglCopyBuffers(egldisplay, eglsurface, eglpixmap);
其中eglpixmap的型態就是 EGLNativePixmapType
它是由 fbCreatePixmap這個API產生的
eglpixmap這個東西裡面應該有包含color buffer的資訊
Thelink大大提到了範例
沒錯,廠商的確有提供範例~
但是是winCE的...XD
而在winCE裡 EGLNativePixmapType的型態就是HBITMAP
看他的範例也的確可以讀到color buffer的資訊
但我的平台是arm-linux的
直接讀是有問題的
我試著把裡面的資訊印出來
形式大概長這樣:
eglpixmap[0] = oooxxx →看起來像某位址
eglpixmap[1] = xxx000 →看起來像某位址
eglpixmap[2] = 800 →看起來像我設定的window width
eglpixmap[3] = 480 →看起來像我設定的window height
eglpixmap[4] = 32 →看起來像我設定的depth
eglpixmap[5] = .....
所以我在猜想會不會 _FBPixmap的形式大概是長這樣
sruct _fbpixmap {
int width;
int height;
int depth;
void* data;
} _FBPixmap
當然詳細資訊還是得知道它的內容有哪些
我也有想過會不會要利用類似eglQuery的API來得到buffer內容
不過查一下似乎沒看到就是了 @@"
無論如何若有說錯的還請大家多指教了
謝謝大家
※ 編輯: donby 來自: 59.120.179.30 (07/04 09:57)
※ 編輯: donby 來自: 59.120.179.30 (07/04 10:00)
推
07/04 11:06, , 19F
07/04 11:06, 19F
→
07/04 11:14, , 20F
07/04 11:14, 20F
→
07/04 14:21, , 21F
07/04 14:21, 21F
→
07/04 14:21, , 22F
07/04 14:21, 22F
→
07/04 15:11, , 23F
07/04 15:11, 23F
→
07/04 15:12, , 24F
07/04 15:12, 24F
→
07/04 15:13, , 25F
07/04 15:13, 25F
→
07/04 15:13, , 26F
07/04 15:13, 26F
回scwg大大
其實最原本目的是希望能把外部影像
先透過GPU處理後存到某個buffer
然後再把這個buffer再輸出到其他地方做額外處理
回azureblaze大大
就我查的結果
目前似乎只有glReadPixel這個API可以把資料輸出到我想要的buffer上
而這個API是拖垮我效能的主因
除了這個API我就不知道有啥方法可以把資料取出來了 @@"
※ 編輯: donby 來自: 59.120.179.30 (07/04 16:35)
推
07/04 16:58, , 27F
07/04 16:58, 27F
推
07/04 17:23, , 28F
07/04 17:23, 28F
再次感謝樓上大大們的回覆
(一直修文會不會被水桶啊 @@a)
littleshan大大的作法我都做過
包括了利用glGenFramebuffers 自己建立背景FBO
不用window surface
改用eglCreatePbufferSurface、eglCreatePixmapSurface
甚至網路上有人提到可以建立多重pBuffer來切換的方式
效能是有快一點
但最主要的癥結點還是卡在必須要利用glReadPixel上
自己實際測試有無加glReadPixel的情況 FPS可以差到3.4倍
目前的解法是在增進外部訊號的處理效率
另外就是寫信問原廠 囧
無論如何還是謝謝大家幫忙
至少滿多人提供想法讓我在實作時也能額外得到一些收穫 XD
如果到時找到更好方法再來分享給大家囉~
※ 編輯: donby 來自: 59.120.179.30 (07/04 19:51)
推
07/04 20:08, , 29F
07/04 20:08, 29F
→
07/04 20:08, , 30F
07/04 20:08, 30F
→
07/04 20:08, , 31F
07/04 20:08, 31F
→
07/04 20:08, , 32F
07/04 20:08, 32F
→
07/05 01:15, , 33F
07/05 01:15, 33F