AMcoder - javascript, python, java, html, php, sql

Զանգը glDeleteBuffersARB-ին հանգեցնում է segfault-ի

Ես փորձում եմ դինամիկ կերպով ջնջել VBO-ները իմ հավելվածում, որպեսզի ստեղծեմ նոր VBO-ներ, որոնք ունեն տարբեր չափսեր: Այնուամենայնիվ, երբ իմ ծրագիրը փորձում է ջնջել դրանք, այն խափանում է հատվածավորման սխալով:

Ստորև բերված է իմ կոդը, որը հատկացնում է VBO-ն.

glGenBuffersARB(1, &_vertexBufferID);
glBindBufferARB(GL_ARRAY_BUFFER, _vertexBufferID);
glBufferDataARB(GL_ARRAY_BUFFER,
                _pMetadata->vertexBufferSize(),
                NULL,
                GL_STATIC_DRAW)

Տվյալները պարբերաբար ավելացվում են VBO-ին հետևյալ կոդով.

glBindBufferARB(GL_ARRAY_BUFFER, _vertexBufferID);
glBufferSubDataARB(GL_ARRAY_BUFFER,
                   _pMetadata->vertexSubBufferOffset(),
                   _pMetadata->vertexSubBufferSize(),
                   &row[0]); // row is a vector<float>

Եվ կոդի այլուր ես փորձում եմ ջնջել VBO-ն այսպես.

glDeleteBuffersARB(1, &_vertexBufferID)

Եվ հենց այդ գծում ես ստանում եմ հատվածավորման սխալ: Ես համոզվել եմ, որ ճիշտ OpenGL համատեքստն ակտիվ է ջնջման պահին:

10.11.2011

  • Ի դեպ, VBO-ն պարզապես չափը փոխելու համար պետք չէ ջնջել, բավական է զանգահարել glBufferData այլ չափով։ Բայց գուցե ձեր իրական դիմումն ավելի բարդ է: 10.11.2011
  • Կարո՞ղ եք ստուգել հիշողությունը, ինչպես valgrind-ը: 10.11.2011
  • @ChristianRau սա իրականում հիանալի է աշխատում, բայց ես դեռ հետաքրքրված եմ այս ջնջման բիզնեսով: 11.11.2011
  • @CoreyD Դրա համար մեզ հաստատ ավելի շատ կոդ է պետք, քանի որ ներկայացված կոդը լավ է: 11.11.2011
  • Արդյո՞ք դա տեղի է ունենում VBO-ները ջնջելու բոլոր փորձերի ժամանակ: Կամ միայն մեկ օրինակով. Դուք ստուգե՞լ եք, որ glDeleteBuffersARB-ը զրոյական ֆունկցիայի ցուցիչ չէ: Բացի այդ, ինչու՞ եք օգտագործում ARB վերջածանցային ֆունկցիաները՝ վաղուց ընդունված VBO ֆունկցիաների փոխարեն: 11.11.2011
  • ARB-ն օգտագործելու միակ պատճառն այն էր, որ դա հենց այն է, ինչ ես գտա, երբ մենք ուսումնասիրում էինք, թե ինչպես արագացնել այս 3D ֆունկցիան ծրագրաշարում: Վաղը մի քիչ ավելի շատ ժամանակ կանցկացնեմ՝ նայելով սա՝ տեսնելու, թե ինչ կարող եմ գտնել: 11.11.2011

Պատասխանները:


1

Ես մեկ անգամ վրիպազերծել եմ հյուսվածքների հետ կապված նմանատիպ խնդիր, և այն առաջացել է բուֆերի արտահոսքի հետևանքով, երբ այն լրացնում է տվյալները: Ավելացրեք սահմանների ստուգում հենց ձեր glBufferSubDataARB-ի զանգերից առաջ, որպեսզի համոզվեք, որ դուք չեք լցվի օֆսեթ+չափով: Նայեք glGetBufferParameteriv-ին՝ GL_BUFFER_SIZE-ով որպես պարամետր՝ ստուգելու սահմանները

14.11.2011
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..