簡體   English   中英

帶有本機代碼輸出的Android OpenGL ES 2.0黑屏

[英]Android OpenGL ES 2.0 w/ Native Code Outputs Black Screen

我要上床睡覺了,但是過去6個小時左右,我一直在為此撓頭,在經歷了無數小小的“哦,一定是問題所在!”之后,我正式昏昏欲睡,出門在外線索。

項目來源

該項目在android上運行,這時應該在屏幕上顯示一個球體。 我測試了代碼,一切都應該正常工作! 我什至有些異的唯一部分是OpenGL ES 2.0的渲染和設置代碼:

設置代碼:

glGenBuffers(1, &vb);
glBindBuffer(GL_ARRAY_BUFFER, vb);
glBufferData(GL_ARRAY_BUFFER, DragonMesh->numVerts*12, 
                    (GLvoid*)verts, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);

glGenBuffers(1, &ib);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ib);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, DragonMesh->numTris*6,
                    (GLvoid*)DragonMesh->vertIndices, GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);

渲染代碼:

glUseProgram(Shader->tech);

float col[] = {1.f, 0.f, 0.f, 1.0f};
glUniformMatrix4fv(Shader->mvpMatrix, 1, GL_FALSE, 
                    (GLfloat*)ModelViewProjection.m);
glUniform4fv(Shader->color, 1, col);

glBindBuffer(GL_ARRAY_BUFFER, vb);

glVertexAttribPointer(Shader->position, 3, GL_FLOAT, GL_FALSE, 12, 0);
glEnableVertexAttribArray(Shader->position);

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ib);

glDrawElements(GL_TRIANGLES, DragonMesh->numTris*3, GL_UNSIGNED_SHORT, 0);

glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);

其中ModelViewProjection.m是float [4] [4],verts是浮點指針,指向一堆連續的值,這些值構成每個位置的坐標。

我正確設置了着色器,沒有錯誤地鏈接並構建了它們(我使用OpenGL的相關錯誤檢查調用檢查了錯誤)。

我還認為這可能是我的設備(運行2.3.3的LG Optimus S,但手機說它支持OpenGL-ES 2.0)。

無論如何,當我運行它時,只有一個黑屏。

如果您能全力幫助我,我將非常感激。

編輯:固定參數GL_UNSIGNED_INT而不是GL_UNSIGNED_SHORT(問題仍然存在,盡管可悲。

EDIT2:我有一個線索! 下班回家時我會嘗試一下,但是在計算投影時我不會將度數轉換為弧度-這是一件壞事。 一件非常糟糕的事情。

EDIT3:不

EDIT4:我已經對倉庫進行了相當多的更新,在每個角落添加了錯誤檢查,並修復了一些錯誤。 屏幕仍然是黑色的,但是...如果有人偶然發現此問題,我強烈建議您檢查該回購協議,因為黑屏可能意味着任何事情。 再次感謝您抽出寶貴的時間閱讀本文! (我還意識到我留下了一些溫度變化,例如垂直fov = 0,並且中心/眼睛具有相同的位置。暫時忽略這些變化)。

EDIT5:意識到我可能會以錯誤的順序將Eye轉換與LookAt轉換相乘。 下班回來的時候我會在下午6點左右檢查出來。

就是這樣!!! 我一直被黑屏困擾數周,這是因為我按錯誤的順序乘以翻譯。 如果有人偶然發現這種試圖修復黑屏的東西,則對此帖子發表評論的人會有一個博客,其中包含一個條目,列出了引起問題的常見黑屏。 它應該可以幫助您。

如果沒有,請檢查矩陣並確保按正確的順序進行所有操作:)

我按照錯誤的順序將矩陣與另一個矩陣相乘

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM