Protože je už po aprílu, můžou strahováci opět zveřejnit program další Virtuální Bastlírny, aniž by připravená témata působila dojmem, že jde o žert. Vězte tedy, že již v úterý 7. dubna od 20:00 proběhne VB, kde se setkají bastlíři, technici, učitelé i nadšenci do techniky a kde i vy se můžete zapojit do družného hovoru, jako by všichni seděli u pomyslného piva. Co mají bastlíři tento měsíc na srdci? Pravděpodobně by nás musel zasáhnout meteorit
… více »Byla vydána verze 26.1 aneb čtvrtletní aktualizace open source počítačového planetária Stellarium (Wikipedie, GitHub). Vyzkoušet lze webovou verzi Stellaria na Stellarium Web.
VOID (Video Object and Interaction Deletion) je nový open-source VLM model pro editaci videa, který dokáže z videí odstraňovat objekty včetně všech jejich fyzikálních interakcí v rámci scény (pády, kolize, stíny...) pomocí quadmaskingu (čtyřhodnotová maska, která člení pixely scény do čtyř kategorií: objekt určený k odstranění, překrývající se oblasti, objektem ovlivněné oblasti a pozadí scény) a dvoufázového inpaintingu. Za projektem stojí výzkumníci ze společnosti Netflix.
Design (GitHub) je 2D CAD pro GNOME. Instalovat lze i z Flathubu. Běží také ve webovém prohlížeči.
Příspěvek na blogu herního enginu Godot představuje aplikaci Xogot přinášející Godot na iPad a iPhone. Instalovat lze z App Storu. Za Xogotem stojí Miguel de Icaza (GitHub) a společnost Xibbon.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za březen (YouTube).
ESP-IDF (Espressif IoT Development Framework), tj. oficiální vývojový framework pro vývoj aplikací na mikrokontrolérech řady ESP32, byl vydán v nové verzi 6.0. Detaily na portálu pro vývojáře.
DeepMind (Alphabet) představila novou verzi svého multimodálního modelu, Gemma 4. Modely jsou volně k dispozici (Ollama, Hugging Face a další) ve velikostech 5-31 miliard parametrů, s kontextovým oknem 128k až 256k a v dense i MoE variantách. Modely zvládají text, obrázky a u menších verzí i audio. Modely jsou optimalizované pro běh na desktopových GPU i mobilních zařízeních, váhy všech těchto modelů jsou uvolněny pod licencí Apache 2.0. Návod na spuštění je už i na Unsloth.
Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 3. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).
Průkopnická firma FingerWorks kolem roku 2000 vyvinula vícedotykové trackpady s gesty a klávesnice jako TouchStream LP. V roce 2005 ji koupil Apple, výrobu těchto produktů ukončil a dotykové technologie využil při vývoji iPhone. Multiplatformní projekt Apple Magic TouchstreamLP nyní implementuje funkcionalitu TouchStream LP na současném Apple Magic Trackpad, resp. jejich dvojici. Diskuze k vydání probíhá na Redditu.
Čau, snažím se rozjet v code:block tento kód:
#define GLEW_STATIC
#include <GL/glew.h>
#include <GL/glut.h>
#include <stdlib.h>
#include <stdio.h>
// nekdy je potreba pouzivat funkce s priponou ARB...
#ifdef USE_ARB
#define glBindBuffer glBindBufferARB
#define glGenBuffers glGenBuffersARB
#define glBufferData glBufferDataARB
#define glBufferSubData glBufferSubDataARB
#define glDeleteBuffers glDeleteBuffersARB
#endif
/*
Priklad na Vertex Buffer Objects
================================
Oproti predchozimu (Vertex Arrays) je toto prvni metoda, ktera
nahrava objekty primo do pameti graficke karty, diky cemuz pak
neni nutne pri kazdem kresleni prenaset nejaka vetsi data mezi
programem a grafickou kartou.
Princip:
1) V inicializaci vytvorim VBO a do neho nahraju vsechna data,
ta pak mohu smazat z uzivatelske pameti
2) Lze tam kombinovat souradnice i barvy i dalsi veci
3) Pri kresleni je potreba zabindovat patricny buffer - ten se
identifikuje pouze integerem
4) Dale je treba nastavit ukazatele, pokazde znova
5) Pole lze delat prokladane nebo to davat kamkoliv, predavaji
se tam ukazatele
6) Kreslime to stejnym prikazem jako VertexArrays, to je totiz
asi uplne jedno, ty funkce budou pretizene a akorat berou data
z jineho zdroje
*/
// identifikator bufferu, mimo funkce staci jen toto
GLuint vbo_id;
void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glClearDepth(1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, 800, 0, 600);
// v initu je nyni potreba vytvorit VBO a nahrat do nej data,
// cimzto se data nahraji do graficke karty a z uzivatelske
// pameti mohou byt vymazana
// (kolik_bufferu_chci, ukazatel_kam_zapsat_vznikle_id)
glGenBuffers(1, &vbo_id);
printf("get error = %i\n", glGetError());
// tato data jsou pouze lokalni na zasobniku, pak je mozne je
// smazat...
static GLfloat triangles[] =
{
0.0, 0.0, 1.0, 0.0, 0.0,
200.0, 200.0, 1.0, 1.0, 0.0,
0.0, 200.0, 0.0, 1.0, 1.0,
300.0, 300.0, 1.0, 0.0, 0.0,
600.0, 500.0, 0.0, 0.0, 1.0,
300.0, 450.0, 1.0, 0.0, 1.0
};
// jdem nahrat data do bufferu
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
glBufferData(GL_ARRAY_BUFFER, sizeof(triangles), triangles, GL_STATIC_DRAW);
// dalsi funkce je pro pripadne dalsi data
// glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(triangles), triangles);
// BYLO BY FAJN v nejakem destruktoru volat funkci glDeleteBuffers,
// ale to tady v tomto priklade neni... glutMainLoop uz neskonci, ale
// pri ukoncovani programu by se mely volat napr. destruktory sceny, takze
// pokud mame nejakou statickou scenu, tak muzeme uklid dat tam... dalsi
// varianta je UDAJNE registrace callbacku atexit(func_to_be_called) u
// ostatnich callbacku
}
void onDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// tady se to musi zapnout
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
// zabindujeme buffer, nutno delat pred kazdym kreslenim
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
// nastavime pointery... TENTOKRAT MAME NA KONCI INT pouze pretypovany na void *
// --> takze to nikam neukazuje, je to jen index
glVertexPointer(2, GL_FLOAT, 5 * sizeof(GLfloat), (GLvoid *) 0);
glColorPointer(3, GL_FLOAT, 5 * sizeof(GLfloat), (void *) (2 * sizeof(GL_FLOAT)));
// vykreslime VBO
glDrawArrays(GL_TRIANGLES, 0, 6);
// vypnem to
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
// zapiseme zmeny
glFlush();
}
void onReshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
}
void onKeyboard(unsigned char key, int x, int y)
{
switch (key) {
case 27:
exit(0);
break;
}
glutPostRedisplay();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowSize (800, 600);
glutInitWindowPosition (100, 100);
glutCreateWindow ("Polopaticky mustr na Vertex Buffer Objects");
GLenum err = glewInit();
init ();
glutDisplayFunc(onDisplay);
glutReshapeFunc(onReshape);
glutKeyboardFunc(onKeyboard);
glutMainLoop();
return 0;
}
Mám v systému tyto balíčky:
freeglut3 freeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev
A stále mi to háže chyby kterým nerozumím. Viz příloha.
Tuší někdo kde mám chybu?
Díky Dan
Pro úspěšné vytvoření binárky jí musíš slinkovat s knihovnami libglut.so a libGLEW.so:
$ gcc -lglut -lGLEW -o test test.c
/usr bylo správně (pokud ovšem v usr jsou podadresáře include a lib a tam jsou ty .h a .a,.so).
Tiskni
Sdílej: