Skocz do zawartości

raV

Użytkownicy
  • Zawartość

    97
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralny

O raV

  • Ranga
    Starszy bywalec
  1. raV

    [API] GTK+ czy Qt?

    Ja b. lubię Qt, bo jest b. łatwe, b. uniwersalne i b. obszerne. Kompletny framework. Polecam - mozna w parenaście minut wyklikać genialne GUI.
  2. Dzięki Toster, o to mniej więcej mi chodzi, niestety tylko mniej więcej. We wzorach algebraicznych nie znalazłem zależności na płaszczyznę, na której leży punkt.. Ilustruje to zmieniony rysunek. Generalnie możemy założyć, że mamy dane 3 punkty z płaszczyzny -> stąd płaszczyznę da się wyznaczyć. Mamy też normalną (określa która pół-przestrzeń nas interesuje). Wszystko w kolorze niebieskim na rysunku. Płaszczyzna nie musi być równoległa do niczego, czerwony punkt w srodku pol-sfery niech będzie np. srodkiem ciezkosci tego trójkąta. I jak coś takiego właśnie ugryźć?
  3. Czy ktoś ma takie matematyczne umiejętności, by podać mi wzór na punkt leżący na pół-sferze (zaznaczony na obrazku). Chodzi o to, by parametryzując alfa i betha (0,180) móc otrzymać współrzędne punktu.
  4. A, powinno to wynikać z użytego słownictwa, ale problem dotyczy przestrzeni 3D. Póki co będzie brutal. Trudno.
  5. Witajcie Jak mając N powierzchni (trójkątów) sprawdzić przecięcia? bo można przez poprowadzenie pół-prostej z punktu P i chcę stwierdzić, którą powierzchnię przetnę jako pierwszą. Zadanie jak dla Z-bufora, ale potrzebuje rozwiązanie analityczne. Ja mam bardzo doskonały pomysł brute-force: sprawdzić przecięcie z każdą powierzchnią i tyle. Macie jakieś pomysły?
  6. raV

    [C++][WinAPI] Double Buffer

    Zeby wszystko bylo jasne, jest to jednookienkowa strukturalna aplikacja, wiec jedynie mam to WM_TIMER i WM_PAINT.. wiec w WM_PAINT dać coś takiego: WM_PAINT: PAINTSTRUCT ps; HDC hDC = BeginPaint(hwnd, &ps); HDC hdcMem = CreateCompatibleDC(hDC); HBITMAP hBmp = CreateCompatibleBitmap(hDC, width, height); SelectObject(hdcMem, hBmp); TextOutA(hdcMem, 0, 0, "test", 4); BitBlt(hDC, 0, 0, width, height, hdcMem, 0, 0, SRCCOPY); DeleteDC(hdcMem); DeleteObject(hBmp); EndPaint(hwnd, &ps); a w WM_TIMER liczyć i wywoływać UpdateWindow() ? Przy okazji tego programu chcialbym sie po prostu nauczyc jak najwiecej poprawnego uzywania winAPI, dlatego jestem dociekliwy ;-)
  7. Witam wszystkich, znowu jesteśmy na siłowni. Piszę prosty program w winApi rysujący poruszające się kółka. Kółka oczywiście migają - pewnie problem do rozwiązania podwójnym buforowaniem. Moja procedura obsługi wygląda tak: LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { GetClientRect(hwnd, &screenRect); wndHeight = screenRect.bottom; wndWidth = screenRect.right; switch (message) { case WM_CREATE: initialize(hwnd); break; //case WM_PAINT: // break; case WM_TIMER: calculateStuff(); FillRect(screenHDC, &screenRect, backgroundBrush); paintStuff(&screenHDC); break; case WM_DESTROY: freeResources(hwnd); KillTimer(hwnd, 1); PostQuitMessage (0); break; default: return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } I właśnie mam pytanie do doświadczonych: - czy to dobry pomysł, by w WM_TIMER liczyć i rysować? - jak zrobic podwojne buforowanie? Przyznam szczerze, ze probowalem rozwiazan z sieci, z drugim HDC, nawet z dwoma HBITMAP i potem kopiowaniem BitBlt, ale to nie dzialalo, otrzymywalem szary ekran.. Z gory dziekuje za wskazówki, Rav
  8. zaadoptowałem pomysł z linka i już to działa, ale mam wątpliwości co do efektów. Im dalej od obserwatora - tym scena bardziej się rozjeżdża. To nie intuicyjne - oddalone obiekty powinny wyglądać tak samo. jakiś pomysł, dlaczego? generalnie kod sprowadza się do takie prostego polecenia: glFrustum(-1.5+eye, 1.5+eye, -1.5*height/width, 1.5*height/width, 1, 300); //gdzie eye to ok. +- 0.015
  9. No ale w tym tez problem - nie wiem GDZIE, skoro nie wiem jaki jest układ odniesienia
  10. Robię tak: Tworzę źródło światła (GL_POSITION etc) W pętli głównej rysuję scenę (z różnym glTranslate i glRotate) Wydaje mi się, że te transformacje nie ruszają mojego światła, ale chciałbym się upewnić. tranformacje są w GL_MODELVIEW
  11. Cześć! Nie mogę znaleźć odpowiedzi na (chyba) proste pytanie: Załóżmy, że definiuję źródło światła w punkcie (x,y,z) świecące w kierunku ujemnych Y (pionowo w dół). Następnie, przy każdym rysowaniu sceny, odsuwam ją np translate(a,b,c) Czy źródło światła będzie w punkcie (x,y,z), czy (x+a,y+b,z+c) ? Ten sam problem - inny przykład: definiuję światło równoległe, np biegnące wzdłuż osi OX. Przy każdym rysowaniu obracam scenę np o 90 stopni wokół OY Czy światło będzie padało dalej wzdłuż *bezwględnego* OX, czy *bezwględnego* OZ?
  12. No cóż, nie wiem czy to do końca działa, ale: w "case WM_CLOSE" jako pierwsze dopisałem done=true, co ma przerwać pętlę programu. W zasadzie działa.
  13. Cześć! Oto kolejne trawiące mnie pytanie: czy w openGL mozna wyrenderować klatkę i ją "zapamiętać"? Mam okularki 3D (zielono-czerwone). Chciałbym renderować po 2 klatki z nieco innej perspektywy i na koniec nałozyć je na siebie (np. z lewej tylko kanał czerwony). Czy to jest możliwe?
  14. Problem rozwiązałem i pod Dev'em. @Jason: wiem, że Dev jest stary i naprawdę słaby, ale nic innego nie znam. Polecisz coś darmowego, lekkiego, używającego GCC?
×