Samantha Taylor also said their relationship ended when he cheated on her with Reeva Steenkamp, the woman he shot dead last year.
Ms Taylor described some of Pistorius's habits while they were dating, including what side of the bed he always slept on at home and where he kept his gun during the night.
Her observations of what Pistorius did when they were together show different habits from what the Olympic athlete says he did on a later night when he shot Ms Steenkamp.
Pistorius, 27, is charged with premeditated murder for killing Ms Steenkamp, a 29-year-old model. Prosecutors said he did it during an argument but he insists it was a mistake, and that he shot four times through a locked toilet door believing an intruder was behind it.
The testimony by Ms Taylor paints the picture of a man who had a temper and was fond of guns.
Pistorius carried a gun with him "all the time" when they were dating, and on one occasion he fired it out of a car's sunroof soon after a policeman stopped the car they were in for speeding, she said.
Ms Taylor, who started dating Pistorius in 2011 after meeting him the previous year, described another incident in which she and Pistorius were followed by a car as he drove home.
"When we arrived at his estate, he jumped out of the car with his gun and held it to someone's window and then they drove away," Ms Taylor said.
The court adjourned briefly after Ms Taylor broke down in tears while describing how Pistorius cheated on her with another woman, before he began his relationship with Ms Steenkamp. It adjourned again when she wept while describing problems in her relationship with Pistorius.
Earlier, Ms Taylor said: "He cheated on me with Reeva Steenkamp."
Defence lawyer Barry Roux said he would produce emails between Ms Taylor and Pistorius to show that was untrue and he also sought to highlight apparent gaps in Ms Taylor's memory of the shooting incident on a road in September 2012.
Darren Fresco, a friend of Pistorius, was driving the car that was stopped by police who asked the two men to get out of the car, said Ms Taylor, who was in the car. The police officer then saw Pistorius's gun on the seat of the car, she said.
"He said to Oscar the gun could not just be left on the seat there," Ms Taylor said, adding that bullets fell out of the gun "and then Oscar got very angry and eventually they gathered the bullets."
An angry Pistorius shouted at the officer and later, after leaving the scene, he fired the gun out of the sunroof, she said. He and Mr Fresco were laughing at the time, according to Ms Taylor. Mr Roux said Pistorius had denied the incident.
Pistorius says he killed Ms Steenkamp in his home in the early hours of Valentine's Day 2013 by mistake, thinking she was an intruder. Prosecutors say he intentionally killed her after an argument.
After prosecutor Gerrie Nel asked permission from the judge to uncover possible new evidence at the end of the former girlfriend's testimony, Ms Taylor described previous incidents when Pistorius thought there was an intruder trying to get into his home, and he reacted by waking her up, she said.
"There was one occasion when something hit the bathroom window and Oscar woke me up and asked me if I heard it," Ms Taylor said. "He got up with his gun."
But he woke you up, Mr Nel asked. "Yes. There was probably one or two occasions when he woke me up to ask me if I heard something," Ms Taylor replied.
Pistorius did not attempt to wake or locate Ms Steenkamp before he shot her by mistake, according to his own version of events.
Mr Roux has contended other witnesses who testified to hearing a woman's screams on the night of the killing were mistaken, and that they were actually hearing the high-pitched woman-like screams of Pistorius, mainly after realising he had shot Ms Steenkamp. The athlete has pled not guilty to murder and several firearms charges.
Ms Taylor, however, said she had heard Pistorius shouting at her and other people and that he did not sound like a woman.
The trial continues.