Trang 3 / 6 FirstFirst 123456 LastLast
Hiển thị kết quả từ 21 đến 30 / 59
  1. #21
    Tham gia
    12-02-2007
    Location
    HCM - NT
    Bài viết
    218
    Like
    0
    Thanked 1 Time in 1 Post
    Nếu tôi nói tôi đã từng viết 1 chương trình như 3DS MAX rồi thì bạn có tin không?

    Bạn bỏ tới gần 3tr đồng để mua 1 con VGA CARD chỉ để chơi Game thôi sao, còn ngoài ra nó có tác dụng gì chắc bạn cũng chả biết

    Tôi không hiểu ý bạn là tôi "phá hoại" chỗ nào!

  2. #22
    Tham gia
    06-06-2006
    Location
    HCM
    Bài viết
    2,717
    Like
    136
    Thanked 73 Times in 54 Posts
    Dùng VGA xử lý là đúng đó! Tui 0 rành nhưng người ta còn dùng GPU để encod video nữa
    http://forum.doom9.org/showthread.php?t=89941

    Những gì hiển thị trên màn hình được lưu ở bộ nhớ của VGA card ==> dùng DMA gì đó chuyển dữ liệu tốt hơn là kêu CPU đọc từng byte , từng word từ đĩa vào bộ nhớ của CARD VGA

    eXecutive có biết thực sự 1 chương trình xử lý ảnh như PS chạy thế nào không mà lôi cả Driver Card đồ họa với cả DirectX vào đây. Tôi nghĩ bạn nên học hỏi thật nhiều đã trước khi muốn truyền kiến thức cho người khác. Nếu không Nhiệt tình + *** = Phá hoại đấy.
    Nói có vẻ hình như biết được tại sao thằng PS chạy nhanh thì phải ? PS làm sao mà nó nhanh vậy? Mong 1 bài của bạn nhe

  3. #23
    Tham gia
    21-06-2004
    Bài viết
    121
    Like
    0
    Thanked 1 Time in 1 Post
    Các bạn có biết phân biệt giữa xử lý ảnh 2D, 3D và video không mà đưa mấy cái ví dụ đó ra. PS khi chạy không phụ thuộc vào OpenGL, DirectX và phụ thuộc rất hạn chế vào GPU. Nguyên nhân vì sao thì các bạn tự tìm hiểu.
    Tham khảo nhé:
    http://www.edn.com/article/CA6262535.html
    http://blogs.adobe.com/psperf/2006/0...d_stories.html
    http://www.fredmiranda.com/forum/topic/576004
    http://www.adobe.com/products/photoshop/systemreqs.html
    @ eXecutive: Nếu chỉ vì bạn viết được 1 chương trình như 3DS MAX mà có thể khẳng định các chương trình khác cũng sử dụng OpenGL, DirectX, GPU.... tương tự như thế thì đúng là.... Bạn nên học hỏi nhiều hơn nữa trước khi đi gieo kiến thức cho người khac. Mình nói nghiêm túc đấy

  4. #24
    Tham gia
    20-12-2004
    Bài viết
    324
    Like
    56
    Thanked 44 Times in 27 Posts
    Bài viết của bạn eXecutive tôi không định bình luận, vì tôi chỉ muốn giúp khopanh tối ưu thuật toán thôi. Nhưng tôi muốn đính chính để bạn eXecutive không ngộ nhận về graphics.

    Đúng như bạn sephiroth2m nói, PS không hề liên quan đến OpenGL và DirectX. OpenGL, DirectX và những VGA card cao cấp sinh ra để cho ảnh động thời gian thực. Nói vui một chút, nếu PS mà dung OpenGL và DirectX để lưu trữ ảnh thì PS đó chậm hơn những PS hiện nay nhiều. Trong hệ thống máy tính CPU vẫn là có năng lực xử lý mạnh nhất. Nên nhớ PS là chương trình xử lý ảnh 2D, tĩnh. Tôi nghĩ GIMP cũng đủ nhanh, nếu bạn có bất kỳ nghi ngờ gì, mở source code nó lên xem để bạn thấy thế giớ 2D khác 3D ở điểm nào.

  5. #25
    Tham gia
    12-02-2007
    Location
    HCM - NT
    Bài viết
    218
    Like
    0
    Thanked 1 Time in 1 Post
    Thôi được, tôi cũng đính chính lại một chút để thỏa lòng mọi người.

    Tôi chỉ đề cập tới vấn đề DRIVER CARD và GPU 1 chút mà đã có chuyện.

    Khi bạn chạy Autodesk 3D MAX chẳn hạn. Khi khởi động đầu thiết nó cho phép chúng ta thiết lập các thư viện hỗ trợ như OpenGL, DirectX và một cái nữa là software. Điều đó chứng tỏ cái gì, các tông ty phần mềm này đủ sức để làm một thư viện đồ họa cho riêng mình. Còn việc sử dụng OGL hay DX thì còn tùy thuộc vào nhiều cái nữa nữa.

    Tôi chỉ nói xử lý hiệu ứng là làm trên BUFFER. Ví dụ một bức ảnh 5000x2000 thì chỉ cần 1 buffer như sau:
    Code:
    typedef struct TagRGBA{
        BYTE Blue;
        BYTE Green;
        BYTE Red;
        BYTE Alpha;
    }RGBACOLOR;
    
    RGBACOLOR *pBuff = new RGBACOLOR[5000 * 2000]
    Khi load ảnh bạn phải giãi mã được những thông tin này.

    Tất cả các thuật toán sẽ được xử lý trên vùng đệm. Các hiệu ứng chủ yếu là sự thay đổi màu sắc các giá trị R,G,B hoặc hoán đổi các phần tử mà thôi.

    Ví dụ hiệu ứng Artistic effects
    Code:
    procedure sketch( I )
       For y <- image(min_row) to image(max_row) do
          For x <- image(min_column) to image(max_column) do
             If random(10) < extent then
                O(x,y)<- buf
             else 
                buf <- I(x,y)
          end if
       end for
      end for
    end sketch
    Một ký hiệu như:
    - O(x,y) -> Out IMG (x,y) Giá trị màu sau hiệu ứng
    - I(x,y) -> In IMG (x,y) Giá trị màu của IMG ban đầu
    Như vậy tối thiểu phải có 2 Buffer mới có thể xử lý được!

    Thuật toán này sẽ hiệu ứng như sau:


    Tài liệu tham khảo "Image Processing Algorthms"

    Đây là một những thuật toán nâng cao và đòi hỏi phải có sự xử lý của CPU. Giai đoạn chờ khi hiệu chỉnh (mà PS thường loading...)

    Còn việc ZOOM như chính tác giả đề cập tại sao chương trình bị chậm!

    Hãy test 1 ví dụ: Mở Paint ra và mở 1 file ảnh chừng 800x600.

    - Chúng ta chọn công cụ ZOOM và phóng ra. Tức thì hình ảnh sẽ được phóng to và ngược lại rất nhanh. Đây là giai đoạn mà GPU xử lý nó chỉ phóng to (vẽ những khoảng BUFFER cần thiết) mà không tác động điều chỉnh lên nội dung BUFFER.

    - Nhưng chúng ta chọn menu Image->Stretch và nhập H:500% V:500%. Nhấn OK. kết quả hiện ra cũng là 1 hình ảnh to như vậy nhưng phải chờ một chút để CPU xử lý
    Có lẽ 2 người sẽ hiểu tại sao tôi phải nói đến GPU ở đây!

    Khi render 1 img thì chắc chẳn phái đưa qua RAM VGA và nhờ GPU xử lý rồi đưa lên màn hình hoặc tệ lắm cũng phải dùng 2 Buffer để Swap (nhưng ruốt cuộc cũng phải qua VGA RAM) chứ không thể SetPixel được bởi vì lúc này sẽ làm chương trình rất chậm trong giai đoạn vẽ. Ai phủ định không có sự tham gia của GPU thì hãy coi lại dây tín hiệu của Monitor có gắn vào CardMH hay không?

    Và đó là con đường duy nhất để hiện thị hình ảnh lên vi tính như ngày nay nhưng bạn có đủ khả năng để viết 1 LIB đẩy trực tiếp BUFFER ra Card đồ họa rồi vẽ hay không? DX và OGL là hai phương pháp hiện thời mà tôi đề cập.

    Những thành tựu của công nghệ đồ họa trong những năm 1900 phát triển gần đây mạnh như vũ bão.
    Tại sao
    - RAM của Card MH càng ngày càng lớn?
    - Chip xử lý ngày càng nâng cấp phiên bản?
    - Bằng thông giao tiếp với Main càng tăng (AGP8X: 2.14Gb/s nhưng ngày nay PCIEx x16 8B/s).
    -> Tất cả là vì đồ họa.

    Trong con Chip đồ họa như ATI và NVIDIA đã có những chương trình xử lý ảnh rất cơ bản rồi ví dụ như:
    - Xoay
    - Tỷ lệ (Phóng ngang, phóng dọc, Đảo nghịch theo trục X, Y)
    - Tịnh tiến đi chuyển
    - Các kỹ thuật như xử lý răng cưa
    - Kỹ thuật Blend (ghép 2 ảnh có độ alpha).
    - Các thuật toán vẽ đường thẳng, tô màu...
    Và GPU sẽ chạy các chương trình đó!

    Tuy nhiên vận dụng những điều này như thế nào?
    Chúng ta chỉ cần đưa Buffer này vào RAM của VGA.
    Rồi sau đó chạy một số lệnh cho CHIP đồ họa xử lý ví dụ như xoay (glRotation -> Lib OGL)
    Nó sẽ Render ra màn hình.
    Sau đó chúng ta sẽ copy kết quả ngược lại từ RAM VGA -> BUFFER! Tôi nghĩ đây là phương pháp nhanh.

    Và nói đến OGL hay DX đa số thường nghĩ nó là 3D nhưng nó hỗ trợ đầy đủ các phép chiếu 2D, các thuật toán để làm việc trên đồ họa Vector lẫn Pixel. Do đó khi nhắc tới OGL người ta thường nói tới từ "chuẩn".

    Hy vọng bạn sẽ hình dung ra những gì tôi nói!
    Được sửa bởi eXecutive lúc 23:40 ngày 12-10-2007

  6. #26
    Tham gia
    21-06-2004
    Bài viết
    121
    Like
    0
    Thanked 1 Time in 1 Post
    Hãy test 1 ví dụ: Mở Paint ra và mở 1 file ảnh chừng 800x600.
    - Chúng ta chọn công cụ ZOOM và phóng ra. Tức thì hình ảnh sẽ được phóng to và ngược lại rất nhanh. Đây là giai đoạn mà GPU xử lý nó chỉ phóng to (vẽ những khoảng BUFFER cần thiết) mà không tác động điều chỉnh lên nội dung BUFFER.
    - Nhưng chúng ta chọn menu Image->Stretch và nhập H:500% V:500%. Nhấn OK. kết quả hiện ra cũng là 1 hình ảnh to như vậy nhưng phải chờ một chút để CPU xử lý
    eXecutive hãy cho bằng chứng Paint sử dụng GPU để xử lý công đoạn 1 và CPU xử lý công đoạn 2.

    Không biết bạn thế nào chứ tôi bằng mắt thường cũng có thể nhận ra 1 chương trình có sử dụng DirectX/OpenGL hay không.
    Lý do PS không sử dụng DirectX/OpenGL đơn giản là vì những chức năng của nó CPU/RAM xử lý khá tốt. Mặt khác, DirectX/OpenGL yêu cầu card đồ họa cao cấp mà không phải máy tính nào cũng có. Nên nhớ PS nói riêng hay các chương trình 2D image processing nói chung xuất hiện trước khi các loại card đồ họa cao cấp trở nên phổ biến khá lâu.

    Và đó là con đường duy nhất để hiện thị hình ảnh lên vi tính như ngày nay nhưng bạn có đủ khả năng để viết 1 LIB đẩy trực tiếp BUFFER ra Card đồ họa rồi vẽ hay không? DX và OGL là hai phương pháp hiện thời mà tôi đề cập.
    Thế thì GDI trên Windows sinh ra để làm gì? BitBlt() chỉ để làm cảnh thôi sao?

    Tuy nhiên vận dụng những điều này như thế nào?
    Chúng ta chỉ cần đưa Buffer này vào RAM của VGA.
    Rồi sau đó chạy một số lệnh cho CHIP đồ họa xử lý ví dụ như xoay (glRotation -> Lib OGL)
    Nó sẽ Render ra màn hình.
    Sau đó chúng ta sẽ copy kết quả ngược lại từ RAM VGA -> BUFFER! Tôi nghĩ đây là phương pháp nhanh.
    Vậy hãy thử tưởng tượng thế này nhé:
    * Thủ tục 1:
    - Load ảnh vào RAM
    - Khởi tạo DirectX/OpenGL
    - Copy ảnh vào VGA Memory
    - Zoom ảnh
    - Copy kết quả ra BUFFER
    - Kết thúc DirectX/OpenGL

    * Thủ tục 2:
    - Load ảnh vào RAM
    - Zoom ảnh (~ copy ra BUFFER)
    - Đưa ra màn hình

    Theo bạn nghĩ thủ tục nào nhanh hơn?

    Tôi không hiểu ý bạn là tôi "phá hoại" chỗ nào!
    Có 1 bài toán đơn giản người ta hỏi mà bạn đưa ra tràng giang đại hải nào là VGA driver, DirectX, OpenGL... Không phải dân "pro" như bạn mà đâm đầu vào mấy cái đấy thì biết đến đời nào mới xong?

  7. #27
    Tham gia
    12-02-2007
    Location
    HCM - NT
    Bài viết
    218
    Like
    0
    Thanked 1 Time in 1 Post
    sephiroth2m à! Bạn nên coi lại lời nói của bạn khi nói tôi là
    Nhiệt tình + ***X = Phá hoại!
    Tôi đưa ra ý kiến do chính bản thân mình. Bạn không đồng ý thì cũng không thể nói tôi như vậy. Mà chưa hẳn bạn đã đủ kiến thức để nói tôi là ***x

    Vậy hãy thử tưởng tượng thế này nhé:
    * Thủ tục 1:
    - Load ảnh vào RAM
    - Khởi tạo DirectX/OpenGL
    - Copy ảnh vào VGA Memory
    - Zoom ảnh
    - Copy kết quả ra BUFFER
    - Kết thúc DirectX/OpenGL

    * Thủ tục 2:
    - Load ảnh vào RAM
    - Zoom ảnh (~ copy ra BUFFER)
    - Đưa ra màn hình
    Bạn không hề để ý các chương trình đồ họa làm những gì?
    Bạn hãy khởi động Photoshop hay 3DS MAX với MS WORD chẳng hạn.

    - Tôi hỏi bạn khởi động cái nào lâu hơn. 100% là chắc chắn là các App về Graphics phải chậm hơn rồi. Bởi vì nó phải khởi động những Engine và kèm theo. DX hay OGl hay GDI khởi động chưa hết mất 1s, và nó chỉ làm 1 lần duy nhất khi khởi động
    - Giai đoạn có thể nói là lâu đó chính là load ảnh và xử lý ảnh.
    - Còn những kỹ thuật như ZOOM là cái người sử dụng thường xuyên làm! Với hỗ trợ CPU và CPU thì tôi hỏi thử bạn cái nào nhanh hơn!

    Thế thì GDI trên Windows sinh ra để làm gì? BitBlt() chỉ để làm cảnh thôi sao?
    Trước đó tôi đã có nói
    Quote Được gửi bởi eXecutive
    Khi render 1 img thì chắc chẳn phái đưa qua RAM VGA và nhờ GPU xử lý rồi đưa lên màn hình hoặc tệ lắm cũng phải dùng 2 Buffer để Swap (nhưng ruốt cuộc cũng phải qua VGA RAM) chứ không thể SetPixel được bởi vì lúc này sẽ làm chương trình rất chậm trong giai đoạn vẽ.
    BitBlt chính là cách Swap 2 vùng đệm ra RAM màn hình đó bạn ơi!
    Nhưng để có BitBlt thì bạn phải làm gì?
    - Khởi động GDI. Một CDC ảo và 1 Bitmap. Vẽ tất cả ra CDC ảo rồi đưa lên CDC thât bằng BitBlt.
    - Giả sử bạn LOAD 1 BMP chắc chẳn bạn phải đi từng pixel và setpixel lên CDC ảo đó?
    -> Nó có thực sự nhanh bằng memcpy hay memmove không?

    Còn giai đoạn BitBlt chính là giai đoạn đẩy Buffer ra VGARAM. Đồ họa trên Windows đều phải thực hiện nguyên tắc này.
    Hy vọng sẽ thỏa ý kiến của bạn!

  8. #28
    Tham gia
    21-06-2004
    Bài viết
    121
    Like
    0
    Thanked 1 Time in 1 Post
    Potay.com. Tôi không có nhiều thời gian để tranh luận với bạn về vấn đề này nữa. Chắc xin dừng lại ở đây. Chỉ muốn hỏi bạn 2 câu hỏi:
    - Bạn đã bao giờ chạy thử cái ứng dụng zoom = DirectX/OpenGL trên các máy cấu hình đồ họa thấp chưa? Kết quả thế nào?
    - Bạn đã bao giờ viết thử 1 ứng dụng GDI nào cho ra hồn chưa mà kết luận là zoom bằng GDI thì chậm và giật?

    Ở trên tôi đã đưa ra mấy cái link mong bạn tự tìm hiểu, vậy mà bạn nhất định không chịu tìm hiểu, chỉ vin vào mấy cái lý do vớ vẩn để cãi chày cãi cối. Rồi bây giờ lại nói "Tôi đưa ra ý kiến do chính bản thân mình", thế nhưng bài viết trả lời của bạn khẳng định cứ như điều đó là chắc chắn, trong khi bạn mới chỉ nắm được 1 phần của vấn đề. Biển học mênh mông, càng học càng thấy mình không biết gì. Nếu bạn có tinh thần cầu thị 1 chút, có lẽ bạn sẽ tiến xa.
    Được sửa bởi sephiroth2m lúc 15:36 ngày 13-10-2007

  9. #29
    Tham gia
    06-10-2007
    Location
    Hà Nội
    Bài viết
    22
    Like
    0
    Thanked 0 Times in 0 Posts

    Nói nhỏ nè !

    Biển học mênh mông, càng học càng thấy mình không biết gì. .[/QUOTE]

    Kekeke. Không ngờ 1 vấn đề tôi nêu lại có nhiều ý kiến trái ngược nhau vậy. rất hoan nghênh các bạn, tranh luận về khoa học kĩ thuật là tranh luận để phát triển, điều này phải lấy làm mừng. Đó chính là tiến bộ. Tôi rất cảm ơn các bạn, sẽ nghiên cứu từng ý kiến của các bạn xem đem lại kết quả ntn?
    THANK KIU Ơ GÊN

  10. #30
    Tham gia
    12-02-2007
    Location
    HCM - NT
    Bài viết
    218
    Like
    0
    Thanked 1 Time in 1 Post
    - Bạn đã bao giờ chạy thử cái ứng dụng zoom = DirectX/OpenGL trên các máy cấu hình đồ họa thấp chưa? Kết quả thế nào?
    À hồi đó thì cách đây khoảng 4 năm. Khi đó mình học lớp 11 và cũng là lần đầu tiên mình đụng tới OGL. Lúc đó mình chạy con AMD 500Mhz. Ram 128, RAMVG 4MB. Chỉ chạy trên Win98 thôi.
    -> OGL mình khởi được tốt, và hoạt động tốt trên nền 2D. Còn 3D thì không thể nào thể hiện được Texture.
    Nhưng ở đây đang xét về 2D.

    - Bạn đã bao giờ viết thử 1 ứng dụng GDI nào cho ra hồn chưa mà kết luận là zoom bằng GDI thì chậm và giật?
    Thực ra mình nói cách ZOOM mà bạn đang làm là chậm!
    - Vơi GDI khi bitblt khoảng Pixel cần thiết thì vẫn rất nhanh. Hình như bạn vẫn không công nhận là có sự tham gia của GPU trong công việc này, chính nó đã ZOOM khoảng pixel lên MH đó.

    - Còn bạn lại cho rằng khi ZOOM thì phải dùng CPU và thực hiện các thuật toán giãn hình hay co trên Buffer thì mình không đồng ý!

    Hơn nữa khi bạn Zoom to ra rồi Zoom nhỏ lại thì sao. Bạn làm trên BUFFER sẽ gây bể hình. Rồi làm Zoom nhỏ lại sẽ làm mất đi chất lượng hình ban đầu! Có ai Zoom như bạn không? Muốn khắc phục thì phải thêm 1 BUFFER lưu trữ ban đầu nữa. Lại thành vấn đề tốn bộ nhớ!

    Chỉ thực sự làm điều này khi người sử dụng muốn thay đổi kích thước. Ví dụ như ở PS thì ta chọn Image -> Scale... Paint thì Image -> Stretch.

Trang 3 / 6 FirstFirst 123456 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •