使用__LINE__,__FILE__调式代码

#include <stdio.h>
#define DEBUG printf("file:%s, line:%d", __FILE__, __LINE__), printf
int main() {
    DEBUG("X is %d\n", 100);        // 宏替换后("X is %d\n", 100);会写在printf最后
 
    return 0;
}

代码中添加调试信息可以帮助你更清楚地了解程序的执行流程和数据状态。以下是修改后的代码,增加了各类打印输出用于调试: ```python import sys from PyQt5.QtWidgets import QApplication, QOpenGLWidget, QWidget, QVBoxLayout from PyQt5.QtCore import Qt from OpenGL.GL import * from OpenGL.GLU import * import numpy as np class ObjLoader: def __init__(self, file_path): self.vertices = [] self.faces = [] print(f"[DEBUG] 正在加载 .obj 文件: {file_path}") try: with open(file_path, 'r') as f: for line in f: if line.startswith('v '): # 顶点 vertex = list(map(float, line.strip().split()[1:])) self.vertices.append(vertex) print(f"[DEBUG] 加载顶点: {vertex}") elif line.startswith('f '): # 面 face = [int(vertex.split('/')[0]) - 1 for vertex in line.strip().split()[1:]] self.faces.append(face) print(f"[DEBUG] 加载面: {face}") print(f"[DEBUG] 成功加载模型: {len(self.vertices)} 个顶点, {len(self.faces)} 个面") except FileNotFoundError: print(f"[ERROR] 文件未找到: {file_path}") except Exception as e: print(f"[ERROR] 加载文件时发生错误: {e}") class GLWidget(QOpenGLWidget): def __init__(self, obj_loader, parent=None): super(GLWidget, self).__init__(parent) self.obj_loader = obj_loader print("[DEBUG] 初始化 GLWidget") def initializeGL(self): print("[DEBUG] 调用 initializeGL") glClearColor(0.0, 0.0, 0.0, 1.0) glEnable(GL_DEPTH_TEST) def resizeGL(self, w, h): print(f"[DEBUG] 调用 resizeGL, 窗口大小: {w}x{h}") glViewport(0, 0, w, h) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(45.0, float(w) / float(h), 0.1, 100.0) glMatrixMode(GL_MODELVIEW) def paintGL(self): print("[DEBUG] 调用 paintGL 开始绘制") glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glLoadIdentity() glTranslatef(0.0, 0.0, -5.0) # 设置相机位置 glBegin(GL_TRIANGLES) glColor3f(1.0, 1.0, 1.0) # 设置颜色为白色 for face in self.obj_loader.faces: for vertex_index in face: glVertex3fv(self.obj_loader.vertices[vertex_index]) glEnd() print("[DEBUG] 绘制完成") class MainWindow(QWidget): def __init__(self): super(MainWindow, self).__init__() print("[DEBUG] 初始化主窗口") self.setWindowTitle("OBJ Viewer") layout = QVBoxLayout() self.setLayout(layout) obj_loader = ObjLoader("example.obj") # 替换为你的 .obj 文件路径 gl_widget = GLWidget(obj_loader) layout.addWidget(gl_widget) self.resize(800, 600) print("[DEBUG] 主窗口初始化完成") if __name__ == '__main__': print("[DEBUG] 启动应用程序") app = QApplication(sys.argv) window = MainWindow() window.show() print("[DEBUG] 程序进入事件循环") sys.exit(app.exec_()) ``` ### 调试信息说明: - **ObjLoader 类**:打印文件路径、顶点和面的读取情况。 - **GLWidget 类**:打印 OpenGL 的生命周期方法调用(`initializeGL`, `resizeGL`, `paintGL`)。 - **MainWindow 类**:打印窗口初始化相关的信息。 - **主函数入口**:打印程序启动和运行阶段的信息。 这些调试信息可以帮助你确认模型是否被正确加载,以及 OpenGL 是否正常渲染。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值