Diskuze: XNA zrychleni programu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 26 zpráv z 26.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Použij lepší programovací jazyk, třeba C++ nebo cokoli, co má s .NETem
co nejméně společného. Už i Microsoft dává od XNA ruce pryč. 
Jak rika Whateverwdasd neco jineho nez .NET...
Pokud nechces nejaky nizkourovnovy jazyk, tak Java a LWJGL. Body si lehce
nahrajes pomoci nabindovaneho openGL pres VBO (vertex buffer object) nebo VAO
(vertex array object) do graficke pameti a budes mit co nejrychlejsi mozny
vysledek vykreslovani. 
To ale neznamená, že si nemůžeš napsat třeba DLLko v C++ na tu
kritickou část nebo ano? 
A umis pracovat s efekty? Hlsl? Ulehcis tim tak praci cpu. Pocitat to pote bude graficka karta. Tim si rapdine zvysis vykon. Pokud to tedy spravne pouzijes.
no to možná ne, ale spíš jde o to, že to mám rozdělené do více tříd, které tam využívám a potřebuju je optimalizovat všechny na co možná největší rychlost. Momentálně nejdůležitější je pro mě, abych nevykresloval to co nevidím a bohužel nevím jak na to nebo spíš jestli to jde nějak elegantně a hlavně lehce udělat.
Přejít z .NET na Javu? To by si opravdu hodně pomohl... 
Kolik je těch bodů? Kreslíš je v 2D nebo 3D? Jak je kreslíš? JSi si jistý, že zdržuje vykreslování?
Satik: momentálně asi 200k (ale bude jich mnohem víc) a je to ve 3D. vykresluju to tak, že kolem toho bodu si z trojúhelníků poskládám krychli. Body si uložím normálně do VertexBufferu a vykresluju ty primitiva. Teoreticky potřebuju zrychlit celý ten kód, kde to prostě bude nějak možné, od načítání bodů, až po vykreslování
To bychom ale pote museli ten kod videt. Pochybuji, ze tu nekdo bude studovat cely kod, ale muzes sem poslat nektere dulezite tridy atd.
Tady nejde o jazyk, ale o to OpenGL, klidne muze pouzit OpenGL pro C#-> OpenTK. XNA moc rozmazluje programatory a v nekterych pripadech vykonava zbytecne nejake operace navic.
Jestli uz umi v xna a ma v tom rozdelany tento projekt, tak bych se uplne nehrnul do jeho prepsani. Ucit se uplne neco noveho, jeste kdyz je to diplomka. Radsi mu pomoz s tim co ma. Ale jinak s tvym nazorem souhlasim
tak hlavní myšlenka toho zobrazovani je asi tahle:
GraphicsDevice device;
VertexBuffer wallBuffer1;
ScannedData data;
private void BuildWallBuffer()
{
data =
ScannedData.LoadFromFile("D:\\Visual_Studio_2010\\Data\\Stena\\Scan-20120329-111841-162.scan");
//nactu zmerene body ze skeneru
wallBuffer1 = CreateBuffer(data, 0, 87381);
}
public VertexBuffer CreateBuffer(ScannedData data, int startPoint, int
stopPoint)
{
VertexBuffer wallBuffer;
List<VertexPositionColor> vertexListWall = new List<VertexPositionColor>();
foreach (VertexPositionColor vertex in WallTile(data, Color.Green,
startPoint, stopPoint)) //funkce vraci body krychle kolem každého bodu
{
vertexListWall.Add(vertex);
}
wallBuffer = new VertexBuffer(device,
VertexPositionColor.VertexDeclaration, vertexListWall.Count,
BufferUsage.WriteOnly);
wallBuffer.SetData<VertexPositionColor>(vertexListWall.ToArray())
return wallBuffer;
}
public void Draw(Camera camera, BasicEffect effect)
{
effect.VertexColorEnabled = true;
effect.World = Matrix.Identity;
effect.View = camera.View;
effect.Projection = camera.Projection;
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Apply();
device.SetVertexBuffer(wallBuffer1);
device.DrawPrimitives(
PrimitiveType.TriangleList,
0,
wallBuffer1.VertexCount / 3);
}
}
Chtělo by to ten kód, takhle toho moc nevydedukujeme.
Momentálně je to teda asi 200k*12 trojuhelniku, coz je cca 2,4M trojuhelniku, coz neni az tak zavratne cislo.
příště používej na kód tlačítko na vkládání kódu ! 
(2. z prava - 2 listy)
Kolik mas effect passu? Jakou mas grafickou kartu? Kolik to jede fps? Vypada to, ze to procesor nebrzdi :/
Jinak pro optimalizace se zkus kouknout na OCTREE nebo BSP tree, tyhle techniky se vetsinou pouzivaji k optimalizaci vykreslovani.
Ano, chapes to dobre - kdyz nejakou cast nevydis, tak ji nevykreslis.
Implementace octree je jednodussi, bsp by zase asi mohlo byt lepsi, ale neni nic trivialniho ho dobre napsat, aby bylo co nejefektivnejsi.
co sem se díval, tak ještě je quadtree, což je rozdělování prostoru
jen na 4 díly a mělo by být jednodušší ještě než Octree ne? Jinak
probrouzdal jsem net a stále netuším, jak tam ty stromy implementovat
nemáš nějaký dobrý a
srozumitelný turitoriál nebo něco, abych to pochopil i já, když jsem s tím
nikdy nedělal? Nevím jak to mám napasovat do toho svého kódu.
Quadtree je vhodne spis pro 2D prostor, octree je v podstate jen quadtree s jednim rozmerem navic.
Zakladni myslenka je ta, ze si scenu rozdelis treba binarnim pulenim na male
(jak male, to zalezi na tobe) casti a potom je kreslis jednu po druhy a resis
jestli je videt.
Jestli je videt si predpocitas dopredu, jaky algoritmus zvolis uz je celkem fuk,
ale vetsinou je to nejaky jednoduchy raytracing.
Zkusil jsem nakreslit priklad pro quadtree (octree je pak obdobny, jen pridas
jeste jeden rozmer):
cerny cary rozdelujou prostor
zluta je kamera
modra je neco, co chces vykreslit
cerna je nejakej jinej objekt, kterej ti brani ve vyhledu
zeleny cary jsou ktery castio prostoru vidis
cerveny ktery nevidis
Taky nezapomen resit, jestli je prostor ve vyhledu kamery (jestli neni za ni) a ma smysl ji vubec kreslit.
Zobrazeno 26 zpráv z 26.