Tôi đang cố gắng để tăng hiệu suất của ứng dụng iPhone OpenGL ES. Theo Instruments, việc sử dụng tiler của tôi gần như 100% thời gian, và FPS của tôi là khoảng 24. Tôi muốn có FPS của tôi trên 30. Tôi có thể đến đó bằng cách chuyển đổi từ GL_FLOAT sang GL_SHORT, nhưng trình bày một số vấn đề kỹ thuật khá khó khăn đối với tôi vào lúc này. Tôi không muốn đến đó.GlDrawElements() có hiệu quả hơn glDrawArrays() khi có nhiều đỉnh trùng lặp không?
Vì vậy, tôi đang cân nhắc việc chuyển từ glDrawArrays() sang glDrawElements(). Tôi có 35 mắt lưới tạo thành 708 đỉnh, nhưng rất nhiều đỉnh được chia sẻ giữa các khuôn mặt. Tôi là bản đồ kết cấu nhưng lưới chủ yếu là đồng đều về màu sắc. Các khuôn mặt yêu cầu texturing đặc biệt sẽ được giữ nguyên.
Giả sử tôi có thể cắt giảm một nửa số đỉnh. Hãy cũng nói rằng tôi cũng tổ chức hình học của mình theo cách có ý nghĩa với iPhone: giả sử, sử dụng công cụ Imagination Technologies PVRTTriStrip. Bỏ qua một lượng nhỏ bộ nhớ phụ cho mảng chỉ mục, điều đó có nghĩa là tôi đã cắt giảm băng thông bộ nhớ một nửa vì vậy tôi sẽ thấy hiệu suất khá tốt.
Điều này có đúng không, hoặc tôi thiếu hoặc hiểu nhầm điều gì đó? Lời khuyên được đánh giá cao.
Ồ, tôi hết lòng đồng ý với bạn. Tôi thực sự đã có nó làm việc tại một thời điểm, nhưng sau đó tôi bắt đầu thực hiện một số tính năng mới, và chuyển đổi GL_SHORT đã gây ra cho tôi vấn đề. Tôi đã ủng hộ nó để tiến bộ về tính năng mới; sau đó, khi tôi đã thêm nó trở lại, tôi đã tìm thấy một lớp phức tạp mới. Nó chắc chắn sẽ là điều tiếp theo tôi cố gắng nếu tôi thấy tôi cần phải ép ra hiệu suất hơn. –